记录一次构建IOS工程路途中遇到的史诗级巨坑
in Cordova with 0 comment

记录一次构建IOS工程路途中遇到的史诗级巨坑

in Cordova with 0 comment

前言

最近有个App需要增加保存图片到本地图库的新功能,遗憾的是当时上线的App未添加文件管理及下载的原生功能,所以需要上载一个大版本让用户重新下载才能使用这个功能,具体实现已完成,主要是在构建IOS安装包时遇到一些奇怪的问题。

当前环境

遇到难关

首先因为重新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成功运行了!!!我终于长叹了口气!然后开始调试新功能~功能调试也正常!太棒了!

总结

生产双端App应用一直是我很恐惧的事情,因为不单单要应对各种你无法预料的问题,比如安卓苹果原生的问题,还得保证你的代码可以在双端运行无兼容问题,万一有些问题解决不了可能就无法构建应用了,用户日活可是有10多万的呢!而且目前所在公司也没有比我水平更高更擅长的人了,我只能自己学习解决...不过痛并快乐着吧,大大小小的坑都踩过,越努力越幸运呀,懂得东西多总是没坏处的~

Responses