纯Flutter项目iOS真机打包问题
前言
最近公司有个小项目准备用Flutter编写,第一次用Flutter,要踩很多坑,今天准备打iOS Release包就出现问题了。从Archive->Distribute App->Export ipa->install
一气呵成,一打开app闪退。真机debug一点也没问题,为什么打包就有问题,以前几乎没碰到过。
原因
必现闪退的问题一般比较好定位,首先查看crash日志。
EXC_BAD_ACCESS (SIGKILL - CODESIGNING)
平时不常见,大致意思是检测到签名问题,导致app被杀死了。
猜想1:证书问题?
新建了一个纯iOS的项目,使用相同的Bundle ID
,证书,打包,安装,完全没有问题!
猜想2:Flutter的问题?
新建了一个Flutter项目,使用相同的Bundle ID
,证书,打包,安装,完全没有问题!
我打开Flutter中文网上的iOS构建应用看了半天也没找到问题,都是一些常规操作。我的应用内容也不多,跟新建项目比,多了一些第三方库,猜想跟这个有关。
解决
在网上搜了很久,也没有人解答,后来无意间瞄到,iOS打Release包前要
1 | flutter build ios --release |
试了下,果然可以了。
1 | zzz:$ flutter build ios --release |
再打包就正常了,回过头来在看官方文档iOS构建应用,这么重要的事情竟然不写,事实证明是自己粗心大意没看到,上面写的好好的,漏掉了- -!
1 | 在开发过程中,您一直在构建、调试、测试debug版本。当您准备将应用发布到App Store或TestFlight上时,您需要准备release 版本: |
总结
原生iOS开发,一般情况下,debug能在真机上跑,Release打包后也基本是正常的。Flutter为什么需要这一步,暂时也不清楚,有时间在了解。记录一下这个过程,多提供点关键字,给跟我一样粗心大意的朋友能搜到这个文章看看,少走弯路,我自己是没搜到。。。