1.创建 keystore
keytool -genkey -v -keystore d:/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
粗字体可换成自己的路径
生成成功之后,d盘下会出现 key.jks 这个文件,代表成功。
2.创建 key.properties
在 flutter 项目 android 下创建 key.properties
key.properties 文件内容为
storePassword=xxx --创建keystore时的密码
keyPassword=xxx --创建keystore时的密码
keyAlias=key
storeFile=d:/key.jks --key.jks的路径
3.修改 android>app>build.gradle 文件
在 buildTypes 上面一行新增
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes>release 则修改为
signingConfig signingConfigs.release
开启混淆
默认情况下 flutter 不会开启 Android 的混淆。
如果使用了第三方 Java 或 Android 库,也许你想减小 apk 文件的大小或者防止代码被逆向破解。
配置混淆
创建 /android/app/proguard-rules.pro
文件,并添加以下规则:
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
上述配置只混淆了 Flutter 引擎库,任何其他库(比如 Firebase)需要添加与之对应的规则。
开启混淆/压缩
打开 /android/app/build.gradle
文件,定位到 buildTypes
块。
在 release
配置中将 minifyEnabled
和 useProguard
设为 true
,再将混淆文件指向上一步创建的文件。
android {
...
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
4.构建Android APK
运行flutter build apk 命令
如果成功,打包好的apk包,会在 flutter项目 build>app>outputs>apk>release> 目录内 ,包名为 app-release.apk
至此。发布完成