flutter apk启动闪退问题

今发布一个flutter apk 安装后启动时老是闪退,经过一遍又一遍查找,发现是指定了so的问题
看多次点击启动
在这里插入图片描述

一、比对打包后的apk

在出现该问题后也搜索了不少资料,参考过
https://blog.csdn.net/m0_37714581/article/details/90172002
https://www.uedbox.com/post/65078/
https://blog.csdn.net/qq_31262175/article/details/97644256
这些朋友的博客,很不幸我并未处理掉问题,接下来只好自己一点点排查了

发现打包后的apk体积相当小加粗样式
于是我尝试着去掉了so架构的指定
在这里插入图片描述
删除掉如上红箭头处的配置,最后配置如:
在这里插入图片描述

再次打包在这里插入图片描述
却大了这么多,再比对一下apk文件
1.8MB的apk在这里插入图片描述
9.2MB的apk
在这里插入图片描述
从上可见9.2MB的包里包含有arm64-v8a ,x86和x86_64 的so,而1.8MB的却没有,安装后启动自然无法成功了(自我推断)

然而在安装后测试证明我的推测是对的去掉对so架构的打包指定,果然可以成功启动

二、压缩apk

如上看apk体积的确有点大,soy得优化哈,这里使用压缩来减小包体积

在build.gradle(Module:app)的buildTypes节点下添加如下代码即可
在这里插入图片描述
为了安全性启动下混淆 ,主要是将proguard-rules.pro拷贝到android>app中,再配置不被混淆的第三方库,如下在这里插入图片描述
添加完成再次打包
在这里插入图片描述
包体积减小了0.4MB(虽然不多但还是有的)

还有初步发现 根据打包时flutter的提示我使用了flutter build apk --target-platform android-arm,android-arm64 --split-per-abi

只打包v8a的so的确要小得多(只有7.8MB),看:
在这里插入图片描述
刚翻到一个朋友对so的解释才发现单独打包个v7a好像并没有什么必要,如:
在这里插入图片描述
具体可以查看https://www.cnblogs.com/dongweiq/p/6824727.html

关于flutter 打包发布的详细操作可以参考flutter 官网

posted @ 2020-02-03 16:46  奔跑的痕迹  阅读(1579)  评论(0编辑  收藏  举报