iOS 比较详细的自定义framework编译方法
Posted TT不觉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 比较详细的自定义framework编译方法相关的知识,希望对你有一定的参考价值。
编译framework
1、ios 开发里面,你不想把源代码给其他人,你就需要编译Framework
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添加一下如下图所示
再次运行就没有问题了
以上是关于iOS 比较详细的自定义framework编译方法的主要内容,如果未能解决你的问题,请参考以下文章
为什么iOS 8上的SceneKit无法编译我的自定义着色器?
与 Django Rest Framework 的非用户连接的自定义身份验证
iOS 开发 ZFUI framework控件,使布局更简单