动态库打包相关问题的解决思路

来源:互联网 发布:去哪里找淘宝货源 编辑:程序博客网 时间:2024/06/06 09:19

主题

问题1:动态库包签名问题。

问题2:动态库包含模拟器代码在接入方上传AppStore时出现无效的X86_64\i386错误。

问题3:bundle中plist中bundle id与动态库bundle id冲突。

问题4:动态库minOSVersion问题。

解决方案

我写的SDK使用动态包的技术进行打包,目前市面上基本很少有人使用此方式来打包,再加上苹果对动态包暧昧的态度,使得这一块可查的资料相当的少。

在商户APP接入我们SDK后提交APPStore时,机检报出若个错误及警告。而静态包则无此问题。

问题1:动态库包签名问题

分析:

同时通过codesign命令打印静态包签名信息发现:静态包不包含任何签名信息。这意味着静态包是在编译连接后和目标APP在发布时一起被签名。

解决思路:


使用developer证书替代distribute证书签名,使得商户在上传的时候,XCode会使用商户自己的distribute证书进行重签名。


问题2:动态库包含模拟器代码在接入方上传AppStore时出现无效的X86_64\i386错误

分析:

通过使用静态包和动态包在编译连接时的比对发现,静态包在发布release版本编译器连接时会自动的将x86&i386架构的二进制码剔除。


解决思路,在打包过程中,不要把x86,i386架构与发布的arm架构二进制码合并。

问题3:bundle中plist中bundle id与动态库bundle id冲突

在SDK制作过程中,难免要使用bundle来组织SDK用到的xib,image,p12等资源文件。在系统默认bundle会附带描述bundle的plist,这个info.plist处理不好,内面的内容会和Framework冲突。而在bundle制作过程中,xcode并不会也不需要对bundle做签名。这意味着,我们可以删减bundle的内容, 而不会导致验签错误。

解决办法:右键显示包内容,直接将info.plist删除。

问题4:动态库minOSVersion问题

我们的Framework是从ios6开始支持的。而在商户app接入我们的动态库进行提交appStore时,提示minOSVersion=6.0是无效的值。

解决思路:在我尝试,更改为8.0后,对支持低版本的APP完全没问题,只是在这里会验证一下。


0 0
原创粉丝点击