首先写这篇文章的目的是为了以后忘记怎么操作了可以来看下怎么去实现的!
首先:
1,先创建framework,
2,进入创建好的工程删除掉自带的.h头文件
3,添加所需文件
4,TARGETS —> Build Settings 中设置相关项
(1).Build Active Architecture Only 设置为NO的意思是当前打包的.framework支持所有的设备.否则打包时只能用当前版本的模拟器或真机运行
(2).Build Setting 搜索linking 设置Dead Code Stripping 为NO是编译选项优化,包瘦身,(可不改) Mach-O Type 选中StaticLibrary (静态库) Xcode默认是动态库
(3). 设置framework最低支持的版本
5,TARGETS —> Build Phases
将需要呈现给来的头文件,直接从Project拖到Public中. 不想呈现出来的.h文件不建议拖到Private中. 放在project中即可
6,在进行编译之前应该设置为release模式
7,来到工程目录,Products下的文件都是红色的,现在我们选中.framework文件,分别真机和模拟器运行一遍(成功运行),然后Show in Finder 找到对应的 .framework文件(上级目录可以看出是真机还是模拟器文件夹)真机和模拟器运行成功的文件是在这俩个文件夹内的
内部分为Debug版本和Release版本,同时两者有分为真机版本和模拟器版本framework(iphoneos后缀代表真机版本,iphonesimulator后缀代表模拟器
8,真机版本和模拟器版本framework合并
(1).查看架构信息,打开终端使用命令行 lipo -info 查看framework架构信息
真机版本如下:
真机模拟器如下:
模拟器(2)合并真机模拟器版本
因为以上获取的framework只能在对应的版本上运行(即真机只能在设备上运行模拟器版本只能在模拟器上面运行使用)所以需要合并为通用版本
命令行语句:sudo lipo -create (此处请填写真机AppVest文件路径) (此处填写模拟器AppVest文件路径) -output 自定义合成文件存储路径(合成文件的名字AppVest)
问题1:做合并操作的时候有可能会遇到一个问题,have the same architectures (arm64) and can't be in the same fat output file,就是真机和模拟器中都包含了arm64架构,这个地方要你去项目当中设置一下就行了,截图如下,这一步的操作是去掉模拟器中的arm64,
问题2:还有一种情况,报can't move temporary file:'' to file: '' (Is a directory)这个问题,就是步骤8,第二个合并操作的时候-output 自定义合成文件存储路径(合成文件的名字AppVest)冲突了,重新换个名字就行,
(3)根据以上命令就在相应位置生成了新的AppVest文件,然后把这个新生成的文件拷贝到步骤7,Show in Finder相应的framework中进行AppVest文件替换 ,查看替换后的framework支持全部真机模拟器架构
然后上面截图看到的就是这个framework支持的架构,
9,最后一步就是用这个库了,把.framework拖进其他项目运用起来就行了,
最后,写文章只是为了以后忘记的时候再过来看一眼!
网友评论