前言:网上看过很多flutter打包apk的教程,但对于一些新手来说,基本的apk签名操作也还不熟悉,所以在写完一个flutter项目之后将我的打包经验记录下来。
第一步:生成秘钥文件
进入电脑cmd输入:
flutter doctor -v
找到如下内容。复制并cd 进入Java binary at: 后面的路径(删除 \java),我的目录就是: D:\Android\studio\jre\bin
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
• Android SDK at D:\Android\SDK\commandlinetools-win-9123335_latest
• Platform android-33, build-tools 33.0.1
• ANDROID_HOME = D:\Android\SDK\commandlinetools-win-9123335_latest
• Java binary at: D:\Android\studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
• All Android licenses accepted.
在电脑里创建一个keys文件夹,用于存放生成的秘钥文件。(如 D:\Android\flutter\keys)
keytool -genkey -v -keystore %userprofile%\keystore.jks ^
-storetype JKS -keyalg RSA -keysize 2048 -validity 10000 ^
-alias upload
将 %userprofile% 修改成上面创建的目录(D:\Android\flutter\keys),然后将上面的命令复制到cmd中(此时cmd中的路径应该为最开始cd进入的目录,也就是 D:\Android\studio\jre\bin),执行命令会需要输入秘钥库口令,输入两遍口令之后,剩下的全敲回车,在最后核对填写是否正确的时候输入: yes 或者 y ,秘钥即创建成功。
第二步:创建秘钥文件
进入Flutter项目中,在 [项目名]/android/ 目录下创建一个名为 key.properties 的文件,将一下内容复制进去。
storePassword=生成秘钥时输入的秘钥口令
keyPassword=生成秘钥时输入的秘钥口令
keyAlias=upload
storeFile=秘钥所在的路径(比如我的就是: D:/Android/flutter/keys/keystore.jks 注意不是反斜线)
第三步:配置秘钥文件
步骤一:
在 [项目名]/android/app/build.gradle 文件中将以下前四行代码复制到 Android 前面。
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
//注意在android前面粘贴以上代码
android {
...
}
步骤二:
还是在这个文件里找到如下代码:
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
}
}
第四步:开始打包编译
在Flutter项目路径终端上运行命令即可打包成功
flutter build apk --split-per-abi
PS D:\Android\flutter\Flutter-Project> flutter build apk --split-per-abi
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!
Running Gradle task 'assembleRelease'... 23.9s
√ Built build\app\outputs\flutter-apk\app-armeabi-v7a-release.apk (6.7MB).
√ Built build\app\outputs\flutter-apk\app-arm64-v8a-release.apk (7.2MB).
√ Built build\app\outputs\flutter-apk\app-x86_64-release.apk (7.3MB)