Flutter初体验(二)安卓打包
一直以以来都是用android studio 打包,今天来研究一下怎么用命令行打包APK;
第一步
配置图标
首先,打开flutter项目包下目录
android/app/src/main/res/
可以看到有这个几个目录
- mipmap-mdpi(160dpi)
- mipmap-hdpi (240dpi)
- mipmap-xhdpi(320dpi)
- mipmap-xxhdpi(480dpi)
- mipmap-xxxhdpi(640dpi)
按照对应像素放入对应大小的图标文件,图片格式为 .png
第二步
配置APP名称和图标、系统权限,打开目录:
/android/app/src/main/AndroidManifest.xml
android:label="myflutter" //设置APP名称,可以为中文就不多说了
android:icon="@mipmap/ic_launcher" //配置APP图标路径
第三步
生成 keystore
keytool -genkey -v -keystore /E:/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
注意:/E:/key.jks 为需要存储.jks文件的目录
第四步
安卓根目录下创建 key.properties文件
添加如下代码:
storePassword=秘钥库密码
keyPassword=KEY密码
keyAlias=key
storeFile=<E:/key.jks> // 生成的文件路径
第五步
配置 KEY 注册
打开 build.gradle配置文件,
/android/app/build.gradle
在 android对象中添加 如下代码:
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
修改下面代码
buildTypes {
release {
signingConfig signingConfigs.debug
}
}
为:
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
并添加如下代码:
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.myflutter" //APPID
minSdkVersion 16 // 可运行应用的最低版本的 Android 平台,由该平台的 API 级别标识符指定
targetSdkVersion 27 // 指定运行应用的目标 API 级别。在某些情况下,这允许应用使用在目标 API 级别中定义的清单元素或行为,而不是仅限于使用那些针对最低 API 级别定义的元素或行为。
versionCode 1 // 版本号
versionName "1.0" // 版本名称
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
最后一步
打包
flutter build apk
成功之后会显示如下图内容:
这样我们的apk包就新鲜出炉了;
注意:楼主亲测,,,打包之后闪退问题修复
添加ndk 不能设置的多,多了也会闪退
闪退的话试试这个
flutter build apk --target-platform android-arm64
如果包体积过大的话,可以考虑使用:
flutter build apk --split-per-abi
上述打包命令会在/build/app/outputs/apk/release目录下生成两个apk文件:
app-armeabi-v7a-release.apk
app-armeabi-v8a-release.apk
移除 --split-per-abi参数后,会生成支持所有ABI平台的Apk文件,这样会导致文件体积变大。
补充
修改证书别名
证书默认别名为 key,我们需要修改别名
keytool -changealias -keystore my.keystore -alias key -destalias aliasdebugkey
其中,key 是证书中当前的alias(别名),-destalias指定的是要修改为的alias,这里按规矩来,改为aliasdebugkey!这个命令会先后提示输入keystore的密码和当前alias的密码。
修改证书密码
keytool -keypasswd -keystore my.keystore -alias aliasdebugkey
这一步执行后会提示输入keystore密码,alias密码,然后提示输入新的alias密码,同样,按规矩来,改为android!
以上几个操作执行后,my.keystore就是符合规矩的debug keystore了,接着在Eclipse的ADT设置中选中这个custom debug keystore即可,就可以使用这个签名证书调试apk了。
上面就是先改签名证书密码(改为android),然后改签名的别名的名字,最后改签名证书的别名的密码(也是改为android)。