打包的具体操作,可以参照官网,只是官网没有那么细
1、修改AndroidManifest.xml
2、构建配置 可以跳过
3、构建签名
4、创建 key.properties
5、配置混淆
6、修改builg配置build.gradle
7、打包
--------------------------------------------------分割线--------------------------------------------------------------------
1、修改AndroidManifest.xml
路径:<app dir> /android/app/src/main/AndroidManifest.xml
3、构建签名
使用keytool, 可以直接在Android Studio 的terminal里面操作
口令:keytool -genkey -v -keystore G:/keys/test.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias key
区分开来的字段需要注意,存储路径 和 别名, 路径里面的文件自己创建。
输入口令之后,开始填写一些信息,名字,公司....到了 【否】 这里写y,继续,没有报错的话签名就构建ok了,notepad++打开一坨乱码,我还在怀疑能用不呢。
4、创建 key.properties
路径:<app dir>/android/key.properties 文件手动创建
主要用来引入刚刚的签名文件
key.properties
storePassword = exanple 这是你创建签名写的密码 keyPassword = exanple 这是你创建签名写的密码 keyAlias = key 口令里面的alias key 对应 storeFile = G:/andro/example/android/app/keys/test1.keystore 绝对路径
5、配置混淆
路径:<app dir> /android/app/proguard-rules.pro 手动创建
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.** { *; }
6、修改builg配置build.gradle
路径:<app dir>/android/app/build.gradle
build.gradle
def keystorePropertiesFile = rootProject.file("key.properties") // 引入 def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) android { compileSdkVersion 28 lintOptions { disable 'InvalidPackage' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "myapp.flutter_kiminitodoke" minSdkVersion 16 targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } } buildTypes { release { signingConfig signingConfigs.release // debug minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
7、打包
进入项目目录
flutter build apk
打包好的发布APK位于<app dir>/build/app/outputs/apk/app-release.apk。
至此就ok了,过程中我也遇到了些问题。
特别注意,打包后不能上网,要在android/app/src/main/AndroidManifest.xml </manifest>里加上以下代码
<uses-permission android:name="android.permission.INTERNET"/>