Flutter打包Android应用apk签名
官方教程,点击查看
创建密钥
keytool
可能不在我们的系统路径中,运行 flutter doctor -v
,”Java binary at:” 之后打印出来的就是它的路径。
只有 Java 9 或更高版本才需要 -storetype JKS
标签。从 Java 9 版本开始,keystore 类型默认为 PKS12。
# 打开cmd,定位到步骤1中的路径 cd D:\Android\Android Studio\jre\bin\ # 执行下面的命令生成key.jks keytool -genkey -v -keystore D:/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
keystore
- 如果你想要储存在其他地方,请通过指定 -keystore
传入参数,这里放在D盘根目录下。
alias
- 指定别名
创建密钥时,根据提示自行补充必要信息
创建key.properties文件 文件创建位置工程根目录/android/key.properties
,填入以下信息
storePassword=<上一步骤中的密码> keyPassword=<上一步骤中的密码> keyAlias=upload storeFile=<密钥库的位置,e.g. /Users/<用户名>/upload-keystore.jks>
举例:
storePassword=123456 keyPassword=123456 keyAlias=key storeFile=D:/key.jks
在 gradle 中配置签名 修改 工程根目录/android/app/build.gradle
文件.
在 android
代码块之前将你 properties 文件的密钥库信息添加进去:
def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } # 在此处添加上面的代码,将 key.properties 文件加载到 keystoreProperties 对象中 android { ... }
找到 buildTypes
代码块:
buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, // so `flutter run --release` works. signingConfig signingConfigs.debug } }
替换内容:
signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } } buildTypes { release { signingConfig signingConfigs.release } }
现在我们 app 的发布版本就会被自动签名了。当你更改 gradle 文件后,也许需要运行一下 flutter clean
。这将防止缓存的版本影响签名过程。
发布apk 执行命令:
# 首先清理下 flutter clean # 执行打包命令 flutter build apk
打包成功,apk在android\app\outputs\flutter-apk\
目录下。