企业证书签名的App启动慢(停在暗色图标N秒)

  • 问题
  • 尝试方法
  • 复现环境
  • 影响范围
  • 问题原因
  • 解决办法
  • 相关资料
  • 问题

    最近1个月左右QA发现App经常出现启动慢的情况。且较容易复现。

    复现系统版本:iOS 9.3,且安装企业证书签名的App。

    App启动过程一般是这样的:App图标颜色会首先变暗,变暗后图标再出现放大效果进入LaunchScreen。

    问题是这样的:首次启动App不会出现卡顿,当切换到其他App一段时间后,再次点击App图标时,停在暗色图标这里3至10秒,每次时间不同。

    见右上角51VV的图标,下图是暗色的图标(也即是卡在这个界面3至10秒):

    下图是正常的图标:

    尝试方法

    这个问题主要是我同事尝试解决的,我进行了全程跟踪以及一些签名的支持。

    • 开始以为是AppDelegate里启动的代码太多,进行了很多优化。
    • 后来发现根本没有执行到这里的代码。
    • 后来以为是工程配置的问题,新创建了个工程,进行企业签名,没有出现此问题。
    • 再后来直接在开发机器上企业签名,没有出现此问题。(此时基本怀疑编译机的问题)
    • (编译机,也就是配置的Jenkins持续集成,自动打包,自动企业签名,自动上传fir。以前的博客写过类似文章),也由于工作忙(懒)一直没有升级编译机。
    • 最后,升级编译机到最新的OS X系统(OS X 10.10),Xcode也升级到最新(7.3),再次打包、企业签名。
    • 不会再出现此问题。

    复现环境

    • 编译机 Xcode 7.1 + OS X 10.10
    • 开发机器 Xcode 7.3 + OS X 10.11

    影响范围

    • 仅企业证书签名的App。(AppStore证书签名的App不会出现此问题)

    问题原因

    • 可能原因1:老版本的Xcode在老版本系统上进行企业证书的签名,在App启动时验证App签名证书的代码上,没有做到iOS 9.3系统的完美兼容。或者说,应该是苹果的bug。
    • 可能原因2:老版本Xcode编译新版本的Xcode工程导致。

    当然,我觉得,原因1更加可能。

    解决办法

    • 编译机与开发机环境保持一致。
    • 尽量保持最新版本的系统和开发环境。

    相关资料

    stackoverflow 有问类似问题的,但问题原因不一样。

    http://stackoverflow.com/questions/29589285/why-ios-apps-signed-with-development-or-enterprise-certificates-launch-slower