1. 生成jks
1
| keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
|
2. 创建key.properities
flutter-project/android下创建key.properities
1 2 3 4
| storePassword = 123456 keyPassword = 123456 keyAlias = key storeFile = xxx/xxx/key.jks
|
3.修改build.gradle
flutter-project/android/app/build.gradle
android {}上面粘贴
1 2 3 4
| def keystorePropertiesFile = rootProject.file("key.properties") def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
修改buildTypes
1 2 3 4 5 6 7 8 9
| buildTypes { release { signingConfig signingConfigs.release debuggable false minifyEnabled true shrinkResources true // proguardFile getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
|
修改signingConfigs
1 2 3 4 5 6 7 8
| signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } }
|
4. [可选] 设置编译架构
1 2 3 4 5 6 7 8
| buildTypes { release { signingConfig signingConfigs.release ndk { abiFilters 'armeabi-v7a' } } }
|
5. 编译
常见问题
找不到.pro文件
1 2
| Execution failed for task ':app:minifyReleaseWithProguard'. > java.io.IOException: Please correct the above warnings first.
|
将修改修改buildTypes里的注释打开,并在flutter-project/android/app/创建proguard-rules.pro
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| # 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
-optimizationpasses 5
# 去除编译时警告
-ignorewarnings
#不压缩输入的类文件
-dontshrink
#不优化输入的类文件
-dontoptimize
# 混合时不使用大小写混合,混合后的类名为小写
-dontusemixedcaseclassnames
# 指定不去忽略非公共库的类
-dontskipnonpubliclibraryclasses
# 这句话能够使我们的项目混淆后产生映射文件
# 包含有类名->混淆后类名的映射关系
-verbose
# 指定不去忽略非公共库的类成员
-dontskipnonpubliclibraryclassmembers
# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
-dontpreverify
|