背景说明
自己制作了一个类库Framework,其中使用了第三方的库和资源(xxx.bundle),导出Framework时,这些资源也被打包到Framework中,我把这个库引入到项目中进行开发。
知识点:
自定义的framework若没有签名,无法在真机上运行
自定义的Framework库必须选择Embed & Sign,如果选择Do Not Embed则编译不通过,选择Embed Without Signing,则可以编译通过,但是APP不能安装到手机中,开发安装时会提示Unable install xxx.app的对话框。所以自定义的Framework必须选择Embed & Sign.
回到主题,为什么我们的包在提交APP Store时会提示这个错误。这就是因为Framework中包含了不能签名的文件,如:bundle、sh.我的就是自制的Framework包含了bundle,所以不能签名成功,报此错误。
解决办法:
删除打包Framework中无需签名的资源,将bundle文件单独引入到项目中,删除Framework中包含的bundle,重新archive,一切OK
Ios Framework动态库签名相关知识点:
1.查看framework的签名证书命令:
codesign -d -vv xxxxx.framework
2.删除原有的签名
进入到XX.framwork文件夹内,删除_CodeSignature文件夹
3.查看本机可用的签名文件,命令:
/usr/bin/security find-identity -v -p codesigning
4.使用签名文件签名命令:
codesign -fs "iPhone Developer: ... (...)" xxxxx.framework
更多知识,请找度娘