一、起因
本文记录的是用flutter build apk 打包是遇到的bug,其根本原因目前还没有找到,如有朋友知道原因,烦请评论区告知,不胜感谢!其实之前打包都没有遇到问题,最近突然发现生成的包都没有签名。先自查,项目中的jks 和build.gradle 中的签名配置都是正常的(之前打包一直没问题,再确认一遍)。进入android 目录用AS打开,使用Generate Signed Bundle or APK 打包签名也正常。因为我们的项目多环境配置使用了--dart-define ,所以不能直接用AS打包,而且工期比较紧,所以先记录曲线救国的方案,等有时间了再来深究下签名失败的原因。
二、使用apksigner 给apk加签
我们flutter build apk --release 打包后,用keytool -printcert -jarfile $apkname$.apk 进行检查可以发现apk不是已签名的 jar 文件,接下来就是用命令行对apk加签。我们比较了多种方式,最后选择了apksigner 进行加签:
./apksigner sign --ks $jksName$.jks $apkName$.apk
apksigner 非常强大,还有许多功能,等有空了再补坑,现在先记录一下这个命令的位置 Mac系统下: $userpath$/Library/Android/sdk/build-tools/$version$/apksigner Windows下: %user_path%\AppData\Local\Andorid\Sdk\build-tools\%version%\apksigner.bat ,AppData目录是系统隐藏目录
|