一、创建framework工程
1.1 创建工程
1.1.1 创建普通工程用于测试
1.1.2 创建framework工程
选择动态库工程
创建完成之后的工程
1.2 framework工程设置
1.2.1 将Build Active Architecture Only 设置为NO
1.2.2 TARGETS -> Build Settings->Mach-O type 将其设置成静态库 Static Library (注:这个设置非常重要)
1.2.3 调整最低支持的iOS系统
1.2.4 TARGETS - Build Settings-Architectures 增加armv7s。 如果你用的真机是iPhone5 C,生成的Framework不支持armv7s,默认的Architectures不包含armv7s。 所以要在Architectures下增加armv7s,并选中。
1.2.5 如果 SDK 有用到 Category,注意项目设置 Other Linker Flags 添加 -ObjC
1.2.6 TARGETS - Build Settings - ENABLE BITCODE 设置为NO
1.2.7 将用到的资源文件和第三方的开源库以及SDK添加到工程中
勾选之后的效果
文件配置说明
1.2.8 给framework工程添加.a和.framework库依赖
1.2.9 在framework工程中使用cocoapods中的第三方库
二、遇到的坑
坑一 Include of non-modular header inside
解决方案1:
解决方案2:
在framework库的主头文件中添加头文件
坑二 意思是未定义类Localisator,这个错误发生在MGMailDBOperationManager中(只是以Localisator为例,其他几个一样处理)
解决方案1:打framework包的时候会把Localisator打进去
解决方案2:
坑三 XXX.tbd is not an object file (not allowed in a library)
解决方案:
坑四 ld: xx duplicate symbols for architecture arm64
解决方案:
第一步:
第二步: