APP在iOS12以上版本出现闪退 Unrecoverable CT signature issue, bailing out
2019-06-29
本片文字重点介绍解决问题思路和一个Mac自带的Console神器使用
问题描述
最近在使用Fastlane+Jenkins+Xcode10.1.1+二维码平台
打出IPA包,扫码下载安装后出现,APP在点击启动时会出现在启动页面闪退的问题。但是,但是我在xcode运行真机安装或者xcode直接打包出的IPA安装运行都是一切正常的。
于是开始想办法查找APP崩溃日志看啊,就有了下面:
1. 工程接入腾讯的bugly
。(⊙v⊙)嗯!? 无法统计到Crash日志。
分析原因:可能是因为在App还没启动完成就崩溃了,所以统计不到日志
2. 发生崩溃的IPA包安装到手机之后,通过Xcode -> Window -> Devices and Simulators -> View Device Logs
获取手机的崩溃日志。然而,竟然仍没有崩溃日志!?
直接用xcode打包一切正常,Jenkins打包出的IPA就会崩溃,并且还没有手机crash日志记录。。。
瞬间懵逼!?为啥!???
问题解决经历
没有crash日志无从下手啊,于是就有了下面一系列的排查:
- 工程里面所有的警告⚠️,以及日志打印
- Jenkins打包脚本
- Jenkins配置
- 证书是否是对应的证书。
- 服务器macOS环境
- xcode环境
- 。。。
期间又试试了一下其他之前在Jenkins打包正常的项目,再次进行Jenkins打包安装,竟然也崩溃了!??
各种Google、各种度娘、依然无解。
这个问题困扰了我好多天。。
直到有天我遇到了……
高能预警!!!高能预警!!!高能预警!!!
高潮来了
在xcode中有一个控制台的工具,该工具不仅能实时获取mac的运行日志,也能获取到mac上链接的iPhone设备的运行日志.
xcode的就有入口:Xcode -> Window -> Devices and Simulators -> Open Console
进入后选择你的需要运行的iPhone设备,就能在右边看到iPhone的实时运行日志。
由于日志比较多,也可以进行日志的筛选,过滤关键字bundleID:
终于!!!
我拿到了在改iPhone上APP崩溃的日志
AMFI: '/private/var/containers/Bundle/Application/FBD9A64A-9F21-4004-AB57-2A68EF667BAD/xxx.app/xxx' does not pass CT evaluation, result: 0x80008
AMFI: '/private/var/containers/Bundle/Application/FBD9A64A-9F21-4004-AB57-2A68EF667BAD/xxx.app/xxx': Unrecoverable CT signature issue, bailing out.
泪流满面啊,终于拿到了!!!
Console
果然是黄金神器,相见恨晚!!
经过Google终于找到解决方案:
在iOS12下,iOS应用程序将不再在设备上运行:无法恢复的CT签名问题
有以下文章
- Apple Developer Forums
- stackoverflow-iOS app won't run on device any more under iOS 12: Unrecoverable CT signature issue
- 开发问题记录(二)
原来是证书设置问题,Jenkins打包服务器上企业证书设置不能是始终信任
,应该是使用系统默认
设置。iOS11及以下是OK的,应该是iOS12苹果调整了策略所以不可以了。
我修改了下后,再次Jenkins打出IPA包,真的OK了耶,运行正常!
回顾
回顾整个问题解决的历程,主要是卡在无法获取到crash日志信息无从下手,发现了控制台工具后,拿到crash日志问题就有了入手点,很好解决了。
论善用工具的重要性! 苹果爸爸已经提供给我们了这么好的神器Console
,只是我们一直不知道如何使用。
在文章 开发问题记录(二)中,作者遇到的问题和我一样,他提到了另外一个工具,也是实时获取到日志信息的,但是苹果爸爸已经给我们预备好了这么好的神器了,为什么还要用第三方的呢。
总结
解决问题思路很重要!找到合适的工具也同样很重要!