苹果的又一个坑:InHouse打包后程序不能启动

现象:

 

Debug模式下,程序启动正常,功能也正常。但Archive打包后,LaunchScreen显示一下,程序闪退。

工程为Swift项目,并且嵌入了一个Swift 库(Alamofire)。

 

查看设备日子,发现如下异常:

Dyld Error Message:

Library not loaded:@rpath/Alamofire.framework/Alamofire

Referenced from: /private/var/mobile/Containers/Bundle/Application/2307B97A-4DE2-4BB0-9B3C-9B58FB3617CB/YNYDQX.app/YNYDQX

 Reason: no suitable image found. Did find:

       /private/var/mobile/Containers/Bundle/Application/

 

检查Alamofire,发现代码没有签名,而且Bundle ID不能匹配。怎么回事?明明记得以前嵌入框架(.a文件)是不需要签名的(O-C项目)?!

 

不管了,先解决这个问题再说。于是进行签名,并修改Bundle ID。

 

再次运行程序,发现故障依旧,控制台输出:

 

[deny-mmap] mapped file has no teamidentifier and is not a platform binary: /private/var/mobile/Containers/Bundle/Application/2307B97A-4DE2-4BB0-9B3C-9B58FB3617CB/YNYDQX.app/YNYDQX

 

在stackoverflow上查找答案,有人说需要撤销原来的inHouse证书,然后重新制作新的证书和provisioning profile。

 

于是登录Portal,重新制作证书和Provisioning Profile。

将代码重新签名,再次打包。

 

程序正常启动。

 

比较老的证书和新制作的证书,发下以下部分有所不同:


在新的inHouse证书的主题中,增加了一个新的字段:组织单位(也就是所谓的OU)。

 

原来,iOS(测试设备为8.1)现在开始对inHouse证书中的OU进行验证了。老的证书中并没有这个东西,于是iOS强行终止了App进程。

 

但是苹果官方并没有对此进行说明。对于相对小众的企业开发者来说,无疑又被苹果坑了一回。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值