1:创建Framework
2:将使用到的第三方库用cocoapods导入
一:进入Framework工程目录,创建Podfile文件
$ cd /Users/imac/Desktop/new/CFBaseFramework
$ touch Podfile
二:打开创建的Podfile文件并添加内容,完成后保存
platform :ios, '9.0'
inhibit_all_warnings!
target 'CFBaseFramework' do
# 网络数据库
pod 'AFNetworking', :subspecs => ['Reachability', 'Serialization', 'Security', 'NSURLSession']
# 图片下载
pod 'SDWebImage/WebP'
# 下拉刷新
pod 'MJRefresh'
# 数据处理
pod 'MJExtension'
# 弹窗
pod 'SVProgressHUD'
# 自动布局
pod 'Masonry'
# 弹窗
pod 'MBProgressHUD', '~> 1.1.0'
# 键盘
pod 'IQKeyboardManager'
# crash防护
pod 'JJException'
end
三:执行pod安装命令,命令行转到工程目录下执行以下命令
$ cd /Users/imac/Desktop/new/CFBaseFramework
$ pod install
3:把需要组建化的项目文件直接拖进来
4:公开需要给外部使用的头文件
5:将第四步中公开的头文件在CFBaseFramework中引用
6:配置Build Setting
*Build Active Architecture Only修改为NO,否则生成的静态库就只支持当前选择设备的架构
*将Mach-O Type设为Static Library( 静态库)
*将Dead Code Stripping设置为NO(是否消除无效代码)
*将Link With Standard Libraries关闭
7:生成Framework库
设置为release模式下运行(真机&模拟器)
将编译的 Device 选择为真机 ,然后按下 Command + B 开始编译,编译成功后在 Products 文件夹的 .framework 文件,右键点击 Show in Finder
这里就是生成的framework
8:查看架构信息
打开终端使用命令行 lipo -info 查看framework架构信息
$ lipo -info /Users/imac/Desktop/CFBaseFramework.framework/CFBaseFramework
$/Users/imac/Desktop/CFBaseFramework.framework/CFBaseFramework are: armv7 arm64 armv7s
9:将CFBaseFramework拖入工程中并使用
10:若主工程同样使用cocoapods进行第三方库管理
若主工程同样使用cocoapods进行第三方库管理,并且跟我们创建的framework引用了相同的第三方库。例如同时引用了JJException。编译时项目会报如下错误
- library not found for -ljjexception framework
- 解决方式只需要在主工程Podfile文件中加上:use_frameworks!
当framework使用了pod引用第三方库时并且设置Build Active Architecture Only为NO时,build报错。解决方式删除Frameworks中的libPods-CFBaseFramework.a文件
项目添加静态库Framework报错:Could not build module 'CFBaseFramework’
解决:Public中的头文件,import了其他的头文件,该文件也需要放在public里