这段时间一直用旧的证书打包做测试,给几位同事安装了应用,最近一段时间反馈应用启动时会闪退,把手机拿过来重新装一个发现又没有问题,想复现问题一直没找到方法,开始怀疑是不是证书有问题了,但是总是因为一些临时的事情又把这事给忘了。
今天早上一位同事又反馈应用又闪退了,从前面多次的反馈得知:
1、总是在应用启动的那瞬间闪退;
2、不是在使用期间闪退;
3、每次我设备上打开的都没有问题;
4、给他们重新安装后恢复正常。
从前面几点分析了一下,猜测可能是:应用安装后超过一定时间就会闪退,我手中的设备几乎每天都会安装新包所以我一直没遇到这个问题。
想了一下是不是因为证书过期了?
我手上的开发者账号因为一些原因被弃用了(还忘记了密保😑),没有继续续费,新证书还没下来,所以还是一直用旧的账号做打包测试,可以肯定的是证书是过期了。
从上面不难看出,苹果的开发者证书虽然过期了,但是还是可以进行真机测试的!!!
既然猜到可能是证书过期引起的,而且是在安装后间隔一定时间,那么怎么进行问题重现呢?
准备工作
- 打包一个新的安装包,确认运行没有问题
- 修改系统时间:设置-通用-日期与时间-关闭“自动设置”-修改日期
实验一:将当前时间往前设置“一”天
结果:正常运行实验二:将当前时间往前设置“三”天
结果:正常运行实验三:将当前时间往前设置“五”天
结果:正常运行实验四:将当前时间往前设置“七”天
结果:闪退
通过上面的实验可以验证我们前面反馈的问题:间隔一段时间后应用会闪退,也验证了前面的猜测:证书过期导致应用闪退。
为了进一步确认问题,闪退后,多次点击应用图标启动,结果都是一样:启动闪退。
将系统时间设置为:自动设置,让系统时间恢复正常,重新点击图标启动应用,结果还是闪退,试着修改成其他时间,应用还是处于闪退状态。
可以得出一个结论:一旦证书过期,应用闪退后,不管如何修改系统时间,应用都会启动失败。
至此,还有一个问题没有确定,之前的实验我们是将时间设置为间隔2天。那么安装打包应用后间隔“六”天会不会闪退呢,是间隔“六”天还是间隔“七”天算作一个周期呢?
在进行实验前先做些准备工作:
- 恢复系统默认时间
- 重新打包应用
实验一:打包应用
结果:正常运行实验二:将当前时间往前设置“六”天
结果:正常运行实验三:将当前时间往前设置“七”天
结果:闪退
结论:证书过期后,打包安装应用,间隔“七”天后应用会闪退。
最后还有一个问题:将系统时间设置为过去的时间会怎么样。
同样的在进行实验前先做些准备工作:
- 恢复系统默认时间
- 重新打包应用
实验一:打包应用
结果:正常运行实验二:将当前时间往后设置“五”天
结果:正常运行实验三:将当前时间往后设置“9”天
结果:正常运行实验三:将当前时间往后设置“28”天
结果:正常运行
结论:将系统时间设置为过去的任意时间应用正常运行。
最终结论:证书过期还是能够进行真机测试的,间隔“七”天没有重新打包更新程序会导致应用闪退。
希望上面的实验能够帮助到有需要的朋友,或是感兴趣的朋友可以安照上面的步骤进行实验和重现。