解决打包自己的framework的时候需要依赖第三方framework或文件的问题。
第一步
新建立一个本地Demo工程用于执行源码,创建demo工程目的是方便控制源码测试。
然后将framework的必要文件添加到Demo工程目录下。例如:
1 | Classes/*.{h,m} |
执行以下命令初始化cocoapods环境
1 | pod init |
然后编辑Podfile,把需要依赖的第三方库按规则编写,例如
1 | pod 'GRKit', :path => '../GRKit' |
再执行update,就可以跑起源码demo啦
1 | pod update --verbose --no-repo-update |
第二步
新建立一个target用于Framwork的生成。
- 首先new一个target
- 选取类型为Cocoa Touch Framework
- 填写framework的名字,不要include unit tests,project选取为demo工程,embed in application选取为none
- 创建完成
这个时候就可以去配置framework的文件了,先选取target为framework的target
- build phases->compile sources加入需要编译的.m文件
- build phases->headers加入需要暴露的头文件和需要编译的头文件。
- build phases->Copy bundle resources加入需要的资源文件
然后配置build setting
- Mach-O Type设置为Static Library(打包为静态库)
最后在Podfile里添加以下代码:
1 | target 'XXXSDK' do |
这个Podfile里的target要区别于demo的target,是分开使用的,这里需要编写framework依赖的库。
然后回到Podfile目录下执行
1 | pod update --verbose --no-repo-update |
最后一步
配置RunScript,控制其生成一个模拟器和真机都能使用的framework于当前目录下
- Build phases->new Run Script
1 | if [ "${ACTION}" == "build" ]; |
支持Category
1 | Build Settings -> Other Linker Flags -> -ObjC |
取消bitcode
1 | Build Settings -> Other C Flags -> -fembed-bitcode |
然后打开Project,选取framework的target,分别在真机和模拟器环境执行Build操作,便会输出一个Framwork/XXX.framework在项目的目录下了。最后可以直接把framework加到项目里使用,也可以通过Cocoapods引入到项目中使用,若使用Cocoapods的方式引入则需要再编写一个podspec文件。
可以参考我另外一篇博客: podspec的使用