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

主题

问题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完全没问题,只是在这里会验证一下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值