code signing blocked mmap() of '/private/var/contai 报错

项目中使用了有赞SDK 6.1.0,用Xcode直接安装到手机没有问题,可以正常使用,但是用企业版inhouse证书打包为IPA后,上传到fir扫码安装,发现闪退,系统log如下:

code signing blocked mmap()
Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Description: DYLD, Library not loaded: @rpath/YZSDKCore.framework/YZSDKCore | Referenced from: /var/containers/Bundle/Application/F036330B-952B-42DE-80DD-6A327B75C4EA/test.app/test | Reason: no suitable image found.  Did find: | /private/var/containers/Bundle/Application/F036330B-952B-42DE-80DD-6A327B75C4EA/test.app/Frameworks/YZSDKCore.framework/YZSDKCore: code signing blocked mmap() of '/private/var/containers/Bundle/Application/F036330B-952B-42DE-80DD-6A327B75C4EA/test.app/Frameworks/YZSDKCore.framework/YZSDKCore'
Triggered by Thread:  0

后来发现有赞SDK 6.1.0的framework是动态framework,使用的话需要重新签名。签名的证书要和发布IPA的证书一样。

 

重新签名方法:http://blog.csdn.net/sinat_26415011/article/details/54017733

https://www.cnblogs.com/wenrisheng/p/6434278.html

注意:我刚开始也是安装上面提供的方法重新签名的,但是还是闪退,后来看到这个https://www.jianshu.com/p/59067ba159e5。

原来对动态framework的签名,证书只能在钥匙串登录选项里,而且信任是:系统默认,才可以。大坑啊,我的Mac系统是10.13.3 (17D47)

也可以直接放到工程中和其他代码一起进行打包签名:

但是注意

如果工程中没有包含第三方的动态framework,则打包的时候,证书是‘始终信任’和‘系统默认’,生成的IPA都没有问题。

如果工程中含有第三方的动态framework,则对打包的时候,证书必须是‘系统默认’才行,如果是‘始终信任’,则生成的IPA会闪退。

 

 

 

 

如果是始终信任,执行codesign -fs "iPhone Distribution: xxxx" YZSDKCore.framework:会报如下警告,

Warning: unable to build chain to self-signed root for signer "iPhone Distribution: xxx"Warning: unable to build chain to self-signed root for signer "iPhone Distribution: xxxxx"Warning: unable to build chain to self-signed root for signer "iPhone Distribution: xxxxxx"%

 

图1 证书如果是始终会报警告,打包IPA也会闪退。

 

 

 

图2 证书只能在钥匙串的登录选项里,而且信任是:系统默认

 

posted @ 2018-01-29 16:11  sym3099@gmail  Views(1152)  Comments(0Edit  收藏  举报