iOS静态库(.framework)问题汇总
2017-11-16 本文已影响0人
iOSLee
一、bitcode bundle could not be generated because ' XXXX' 错误

这类错误是由于静态库不支持bitcode而你自己的工程支持bitcode,解决方案有两种:
1、让静态库支持bitcode:Target -》 Build Settings -》Other C Flags 添加 -fembed-bitcode

注意:(更详细的可自行百度)
确保打包的时候使用的是fembed-bitcode, 而不是fembed-bitcode-maker
fembed-bitcode-maker:只是简单的标记一下在archive出来的二进制中bitcdoe所在的位置。
fembed-bitcode: 真的会生成bitcode指令,并且嵌入到二进制中
2、自己的工程关闭bitcode:Target -》 Build Settings -》Enable Bitcode 设置为NO(xcode9 默认创建的工程Enable Bitcode为YES)
二、调用framework中的方法或framework内部调用方法导致unrecognized selector sent to class XXXX 错误
此类问题多半是由于静态库添加了Category导致的,需要在自己的项目中配置,Target -》 Build Settings -》Other Linker Flags 添加-ObjC
解决这个错误的方法就是:将Category的方法链接到APP中,这样APP运行时,就能够找到对应的selector。而 –ObjC就可以完成这个任务。
"-ObjC"的作用是:将静态库中任何Objective-C代码都链接到APP中。任何Objective-C代码当然也包括Category的方法。可以看出,使用-ObjC可能会链接很多静态库中未被使用的Objective-C代码,极大的增加APP的代码体积。
"-ObjC" 的兄弟

遇到问题会持续补充...