博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
创建使用 framework和 a静态库
阅读量:6263 次
发布时间:2019-06-22

本文共 2167 字,大约阅读时间需要 7 分钟。

###简介 在开发中.framework静态库还是比较常见的,比如:SDK,公司间的代码合作等。我们可以把一些不愿意让别人见到的代码,用静态库的方式把它隐藏起来,只留下.h文件显示方法供编程人员使用。而.a文件出了静态库本身外,还需要引入.h文件,而.framework就不需要如此,由于.framework的方便性所以一般情况下我们见到的较多。 ####区别

  • .a静态库是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。
  • .a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用(内部直接包含了要展示方法的.h文件)。

###.a静态库的创建

新建一个项目,如上图所示,左侧的选项可以新建.framework静态库,而右侧的则是创建.a的静态库。
这里我们可以删除自带的.h和.m文件换成我们要打包的内容。这里为了测试,简单的在文件中写一个方法。当我们静态库创建成功之后,引入这个文件中会打印这句话。

通过上述操作我们已经准备好了要打包的文件,并把想要暴露的文件添加完毕,下面我们要进行打包前的设置。 设置编译模式,打开Xcode菜单Product--->Scheme--->Edit Scheme,改为release模式,因为最终打包是要用release模式。
编译机器的选择,如上图,如果我们选择的是NO,那么则会适配所有的机型,当然了编译后的包的大小会有点大,如果我们选择YES,那么编译的包只会适应当前机型以及版本低的机型,当我们用高于这个手机型号的机型时可能不能用。这里就看自己需要了。 下面就需要我们进行编译静态库了,注意的是我们要在真机环境和模拟器环境各编译一次。然后得到两个静态的二进制文件。下图为真机环境举例:
编译后我们会得到真机和模拟器两个静态文件,下面我们要打开终端去合并他。合并的命令为: lipo -create 静态文件1路径 静态文件2路径 -output 输出最终文件的目的路径
合并成功那么现在我们就去试试吧 ,首先我们新建一个叫做Test的测试工程,把我们的.a的静态文件加进去同时把我们需要暴露的.h文件加进去,如下图:
通过打印结果我们可以看到,走了我们自己写的方法。静态.a文件打包成功。 ###.framework静态库的创建 下面我们来创建一个常见的.framework静态库。
如上图所示,我们在新建的项目中加入一组.h和.m文件,文件中写了一个简单的方法,并把想要暴露的.h文件加到Public的位置,此时的静态库还是红的的,表示并没有创建。 和.a文件一样设置编译模式,打开Xcode菜单Product--->Scheme--->Edit Scheme,改为release模式,因为最终打包是要用release模式。同时我们也可设置他所使用的版本。通过General里的Deployment Info选项进行设置。
然后修改生产的Mach-O格式。 编译机器的设置方法与.a设置相同,根据自己的需求进行设置。 完成上述步骤后,我们一如.a的设置一样在真机和模拟器环境下分别编译。
编译结束后我们可以看到framework的颜色已经变为黑色,这是我们 右键show in Finder这次合并的是目录下的箭头所示的文件。合并方法与.a文件相同 lipo -create 静态文件1路径 静态文件2路径 -output 输出最终文件的目的路径
这样我们在桌面上生成了一个文件,现在我们进行我们的最后一步,用这个文件与上图中.framework文件下的 模拟器或者真机下对应的这个文件替换下来。如上图中红色箭头的文件,把箭头所示文件替换下来。 这样我们替换后的文件找到,他就是我们要的. framework静态文件。 下面我们去试试我们新生成的静态库

由上图可以看到,我们把生成的静态库导入我们的测试工程中,打印出结果,可见我们的生成是正确的。 注意事项:

  • 注意导入的方式
  • 注意设置Mach-O格式
  • 记得要把合并后的文件与第一次生成的静态库里的二进制文件替换。

###补充内容: bundle文件 在项目中另一个常见的额就是bundle文件了,主要用来进行资源的管理,用以存放xib文件或者图片等资源,但是需要注意的是bundle文件是是静态的,不进行编译的资源文件。所以,要使用bundle中的资源,就需要找到相应的资源路径。

  • 创建方式: 桌面上创建一个文件夹,把文件夹的后缀改为. bundle这时他就变成一个bundle文件了,这时我们右键显示包内容就可以把对应的图片资源等放进文件中,然后把他丢进工程中就可以使用了。
  • 使用方法:
    这里介绍一种简单的方法,如上图所示,我们在工程中引入了bundle文件,我们要得到他的路径对他进行引用,但是如果我们每次都写文件的路径比较繁琐,我们可以写成预编译语句,这样就可以方便许多。而且bundle文件在多人开发中可以起到很好的作用,解决了多人开发中图片名字一样出现的问题。 ###后记 回顾这篇文章主要介绍了.a静态库和. framework静态库的创建和使用,另外还有bundle文件在工程中对图片资源的管理,通过使用这些小工具,可以帮助我们解决开发中的多种问题。还是值得好好记录下的。

转载地址:http://pwcpa.baihongyu.com/

你可能感兴趣的文章
MapReduce编程模型及其在Hadoop上的实现
查看>>
SEH(__try,__except)
查看>>
Pinterest架构:两年内月PV从零到百亿
查看>>
选择排序
查看>>
关于redis有序集合http://www.runoob.com/redis/redis-sorted-sets.html
查看>>
LESS速查
查看>>
20.pipe
查看>>
.NET Entity Framework入门操作
查看>>
iOS-集成微信支付和支付宝支付
查看>>
SAP
查看>>
读掘金小册组件精讲总结2
查看>>
MVC项目中怎样用JS导出EasyUI DataGrid为Excel
查看>>
制作个人开发IDE
查看>>
给架构师骂了
查看>>
ajax提交form表单资料详细汇总
查看>>
Excel——使用INDEX和SMALL实现条件筛选
查看>>
c#迭代器 转载
查看>>
JQuery与JavaScript
查看>>
Jmeter--正则表达式提取器
查看>>
设置Slider Control 控件的取值范围
查看>>