OC-生成.framework动态包

一:创建项目

1.创建framework项目.png

二:写入代码

截屏2020-04-10 下午3.06.27.png

三:设置一些配置

(1):设置Release模式


2.1.该为Release模式.png

2.2.该Release模式.png

(2)Build Active Architecture only 设置为NO
切换至Build Settings页面,注意选项Build Active Architecture Only,通常Debug选择YES,而Release选择NO。如果是YES,代表静态库只针对当前设备的架构打包,即只针对图中设备模拟器iPhone 11 Pro Max的架构x86_64进行打包。


3.设置为NO,支持所有设备.png

(3)设置.a静态包支持的cpu架构模式
模拟器支持: x86_64
真机支持: arm64,arm64e,armv7,armv7s


截屏2020-04-10 上午10.10.31.png

(4)设置为NO优化打包廋身,也可以可以不改设置为YES


4.是否优化打包廋身,可以不改.png

(5)防止重复链接


截屏2020-04-10 下午3.02.18.png

(6)设置为静态库


5.设置为静态库.png

(7)设置支持的最低版本


6.设置支持的最低iOS版本.png

(8)设置暴露的.h文件和隐藏的.h文件和写入framework的.m文件


7.设置暴露的.h文件和隐藏的.h文件和写入framework的.m文件.png

四:生成framework文件

(1)真机编译一下(Command + B)


8.真机编译一下.png

(2)模拟器编译一下(Command + B)


9.模拟器编译一下.png

(3)framework所在的文件地址


10.1.framework所在的文件地址.png

10.2.编译生成的地址.png

五:将真机和模拟的合并为一个framework文件

(1)我们要合并的是这个文件


截屏2020-04-10 下午2.49.37.png

(2)检查下文件支持的cpu环境

命令
lipo -info 文件路径名
例子:
lipo -info Release-iphoneos_Framework.framework/Framework

(3)合并文件

命令
lipo -create 真机文件路径名1 模拟器文件路径名2 -output 新文件路径名
例子:
lipo -create Release-iphoneos_Framework.framework/Framework Release-iphonesimulator_Framework.framework/Framework -output User/Zg/Release_Framework/Framework

(4)终端命令


截屏2020-04-10 下午2.51.40.png

(5)合并后framework文件生成所在的地址


截屏2020-04-10 下午3.21.33.png

(6)将生成好的文件该好名字替换掉原来文件


截屏2020-04-10 下午3.48.44.png

(7)将替换好的文件所在的framework文件拷贝走,此时这个framework就是我们要的framework


截屏2020-04-10 下午3.47.26.png

六:使用framework

(1)将Framework.framework拖入项目


截屏2020-04-10 下午3.40.25.png

(2)引入头文件.h开始使用


截屏2020-04-10 下午3.40.37.png

七:注意

(1)framework的名字后期是不能改的,所以创建Framework项目时想好名字;

(2).在制作framework或者lib的时候,如果使用了category,则使用改FMWK的程序运行时会crash,此时需要在该工程中 other linker flags添加两个参数 -ObjC -all_load;
(3).带有图片资源的需要把图片打包成Bundle文件,和framework一起拷贝到相应的项目中;

(4).公开的类中如果引用的private的类,打包以后对外会报错,找不到那个private的类,可以把那个.h放到private中

八:参考

https://www.jianshu.com/p/ef3d5b7e7006
https://www.jianshu.com/p/f2bb038db637

你可能感兴趣的:(OC-生成.framework动态包)