1.xcode 13 创建app 或 framework时 没有Products目录
解决方法:项目名.xcodeproj右键显示包内容 ->双击打开project.pbxproj文件->搜索 mainGroup复制后面的一串字符,粘贴到 下面一行的productRefGroup 后面 ->保存 重新打开项目即可。
2.关于生成动态库还是静态库的问题。
3.关与生成真机、模拟器、debug、release库 (下面是在xcode 13.2.1环境下)
1)生成模拟器库时首先要 确保 Build Active Architecture Only 中的Debug为NO
Build Active Architecture Only(只构建活跃的架构)—-> NO
什么叫只构建活跃的架构?所谓活跃的架构是指当前选中的模拟器的架构,你选中的就称为活跃的,你没有选中的那些称为不活跃的,
否则只会生成 arm64, 不会生成想要的i386和 x86_64的模拟器库。
可以通过下面的得到想要编译器版本的库
进入库的目录 lipo -info SmarfidSDK 查看所支持的编译器
lipo SmarfidSdK -thin x86_64 -output SmarfidSDKx86_64
取出x86_64 编译器的文件并生成x86_64文件
用同样的方法取出真机版的 SmarfidSDKarm64文件
lipo SmarfidSDK -thin arm64 -output SamrfidSDKarm64
和并arm64 和x86_64
lipo -create SmarfidSDKx86_64 SmarfidSDKarm64 -output SmarfidSDK
生成 新的SDK 替换原来的即可,
注:我用的是M1的处理器生成的模拟器sdk 也是arm 64的但和真机的arm64无法合并
不知道如何解决(待后续)
3. 关于SDK中用到第三方文件或库冲突的问题。
1)SDK中用到第三方文件
将目当切换到framework下
lipo -info SmarfidSDK 查看编译类型
瘦身出两个编译器
lipo SmarfidSDK -thin armv7 -output Smv7
lipo SmarfidSDK -thin arm64 -output Sarm64
查看各个编译中的目标文件
ar -t Smv7
然后去掉不要的第三方文件
ar -d Smv7 AFHTTPSessionManager.o
不要的第三方文件者要执行一下
同样去掉Sarm64编译文件
然后合并去掉第三方文件后的两个文件
lipo -create Smv7 Sarm64 -output SmarfidSDK 即可
2)SDK中用到第三方库
有待进一步完善