今發布一個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 官網

