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