ios创建静态库

2018-06-22  本文已影响0人  刃之剑

iOS 比较详细的自定义framework编译方法

2016年12月09日10:55:04

编译framework

1、iOS 开发里面,你不想把源代码给其他人,你就需要编译Framework

1

1 、打开Xcode创建一个framework工程。

2、新建一个TestFrame的工程


3、新建一个hello的类,并写两个方法


4、修改一些配置信息,生成支持所有架构的版本。

修改build setting 里面的build active architecture only 如图片所示的把Yes修改为NO 

 

build phase 里面搜索 mach”,设置type static library 


5、把需要公开的.h文件公开

build phase 里面的headers 里面的project 右键 选择move to public group 

6、使用command +b 编译 framework

编译真机 选择 generic iOS device command +b 编译 

编译模拟器 选择任意一个模拟器 command +b 编译 

编译成功是这样的 


7、在文件夹查看编译好的framework

8、在文件夹可以看到如图下面

9、把两个文件夹拷贝到任意一个文件夹下面我这边是桌面的一个”ytt”文件夹

10、下面就需要把模拟器和真机的合并成一个通用版(这里需要在终端操作)

这些是我的终端操作,下面解释一下

taijitongdeiMac:~ taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos

taijitongdeiMac:Debug-iphoneos taiyoshimichi$ ls TestFrame.framework

Headers    Info.plist  Modules    TestFrame

taijitongdeiMac:Debug-iphoneos taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame

Architectures in the fat file: ./TestFrame.framework/TestFrame are: armv7 arm64 

taijitongdeiMac:Debug-iphoneos taiyoshimichi$ cd ..

taijitongdeiMac:ytt taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator

taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ ls TestFrame.framework

Headers    Info.plist  Modules    TestFrame  _CodeSignature

taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame

Architectures in the fat file: ./TestFrame.framework/TestFrame are: i386 x86_64 

taijitongdeiMac:Debug-iphonesimulator taiyoshimichi$ cd ..

taijitongdeiMac:ytt taiyoshimichi$ lipo -create /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator/TestFrame.framework/TestFrame -output /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame

taijitongdeiMac:ytt taiyoshimichi$ cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos

taijitongdeiMac:Debug-iphoneos taiyoshimichi$ ls TestFrame.framework

Headers    Info.plist  Modules    TestFrame

taijitongdeiMac:Debug-iphoneos taiyoshimichi$ lipo -info ./TestFrame.framework/TestFrame

Architectures in the fat file: ./TestFrame.framework/TestFrame are: armv7 i386 x86_64 arm64 

taijitongdeiMac:Debug-iphoneos taiyoshimichi$ 

第一步、使用 cd 命令到 真机文件夹

cd /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos

第二步、使用ls命令显示TestFrame.framework的所有文件

ls TestFrame.framework

第三步、使用lipo -info查看真机支持的编码,可以看到是armv7,arm64 

lipo -info ./TestFrame.framework/TestFrame

第四步、使用cd .. 回到根路径

cd .. 

第五步、重复一二三,命令,只不过第一步的真机路径改为模拟器路径 最后可以看到编码是  i386 x86_64

第六步、合并真机和模拟器的framework使用lipo -create路径a  路径b  -output路径a 

cd ..

 lipo -create /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame /Users/taiyoshimichi/Desktop/ytt/Debug-iphonesimulator/TestFrame.framework/TestFrame -output /Users/taiyoshimichi/Desktop/ytt/Debug-iphoneos/TestFrame.framework/TestFrame

 第七步、cd ..一下重复第一二三步查看得到的编码就是  armv7 i386 x86_64 arm64,说明你编译成功了

可能出现问题1、直接合并两个版本的TestFrame.framework,会便以失败,因为.framework是不可以合并的,s实际上是合并TestFrame.framework里面的TestFrame文件

可能出现问题2、模拟器版本显示没有i386,原因:是因为你在修改build setting里面的build active architecture only没有把Yes修改为NO,

可能出现的问题3、在使用的时候运行会报错dyld: Library not loaded: ***** Reason: image not found崩溃

解决方法,把framework添加一下如下图所示

仅做笔记 ~

上一篇下一篇

猜你喜欢

热点阅读