前言
最近有个App需要增加保存图片到本地图库的新功能,遗憾的是当时上线的App未添加文件管理及下载的原生功能,所以需要上载一个大版本让用户重新下载才能使用这个功能,具体实现已完成,主要是在构建IOS安装包时遇到一些奇怪的问题。
当前环境
- Cordova 8.0
- Android 7.1.4
- Ios 4.5.5
遇到难关
首先因为重新rebuild了app的上层文件,安卓真机测试已经正常可以实现功能,但是IOS需要重新构建工程并使用xcode开发者模式上机测试才能确保万无一失,毕竟一套代码双端运行还是要谨慎点的~

可是当我重新构建IOS工程时出现以下的错误:

我整个直接凌乱了,这是报了个找不到模块的错,可是platform_metadata这是什么平台我却无从下手,于是开始请教万能的google与百度,可是网上的说法各有不一,因为之前的工程是可以正常构建IOS的,所以我怀疑起了后来新增的几个插件,其中我留意的上面的报错里一个插件:

没错,就是这个add-swift-support的插件,于是我就联合关键词搜了一下度娘,找到了这篇文章:

仔细看了下,遇到的情况几乎一致(泪流满面),原来就是该插件的一个版本错误,于是我一顿操作,remove然后重新add一遍,IOS工程终于成功构建啦~
再遇难关,直接闪退
当我以为稳了,能一路顺风进行调试IOS上的功能了,我又一次遭到了社会的毒打,我发现无论我用模拟器或者真机启动App都是直接闪退!我滴妈呀,我又蒙了。
天真的我又怀疑是插件导致的,会不会是哪个插件不兼容IOS呢?可是我查看了所有正使用的插件都不存在双端兼容问题(当然我不会犯这么低级的错误),我就把插件全卸了,开了个新的工程开始一步一步的排查,重复着枯燥的检查。
抓出元凶
去厕所洗了把脸清醒了下再回来,一直徒劳无果的我这次观察了下真机调试时的日志,好像发现了点眉目:

仔细观察另外一个App在启动时第一个启动的插件是hot-code-push热更新程序,在反观这个工程第一个插件都走不到就直接闪退了,于是我怀疑是热更新惹的祸,仔细检查了下,我在构建IOS时的前端上层文件貌似少了这两个玩意:

难道是因为这两个热更新校检文件导致的IOS程序崩溃?可是我的常识告诉我,安卓没生成热更新文件构建App运行也没问题啊,难道苹果就是这么恶心?我立马生成热更新文件然后重新构建App再上真机运行,这一次!App成功运行了!!!我终于长叹了口气!然后开始调试新功能~功能调试也正常!太棒了!
总结
生产应用安装包这阶段总是最容易踩坑的时候,跨端代码不够健壮就会出现很多意料之外的问题,十多万的日活用户可不能出大差错!这时拥有冷静的排错查漏思维就尤为重要了!