1. 生成签名(多一个维度的世界:Android端证书生成)
2. 配置签名(是否需要配置签名信息根据实际情况而定,理论上与多渠道无关,不感兴趣的同学跳过)
首先,可以在gradle.properties文件定义一些和签名相关的参数,也可以直接写到到配置,这里主要方便统一管理
KEY_ALIAS=flutter_demo_realease
KEY_PASSWORD=flutter
KEYSTORE_PASSWORD=flutter
KEYSTORE_FILE=../release.jks
DEBUG_KEY_ALIAS=flutter_demo_debug
DEBUG_KEY_PASSWORD=flutter_debug
DEBUG_KEYSTORE_PASSWORD=flutter_debug
DEBUG_KEYSTORE_FILE=../debug.jks
然后,配置好签名即可:
signingConfigs{
debug{
keyAlias DEBUG_KEY_ALIAS
keyPassword DEBUG_KEY_PASSWORD
storePassword DEBUG_KEYSTORE_PASSWORD
storeFile rootProject.file(DEBUG_KEYSTORE_FILE)
}
release{
keyAlias KEY_ALIAS
keyPassword KEY_PASSWORD
storePassword KEYSTORE_PASSWORD
storeFile rootProject.file(KEYSTORE_FILE)
}
}
3. 配置环境
buildTypes {
debug {
minifyEnabled false
signingConfig signingConfigs.debug
ndk {
abiFilters "armeabi","armeabi-v7a","arm64-v8a", "x86"
}
}
release {
minifyEnabled true
zipAlignEnabled true
shrinkResources true
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ndk {
abiFilters "armeabi","armeabi-v7a","arm64-v8a", "x86"
}
}
}
4. 配置渠道
flavorDimensions "flutter_demo"
productFlavors {
dev {
dimension "flutter_demo"
applicationId "${defaultConfig.applicationId}.dev"
manifestPlaceholders = [
app_name: "flutter_dev",
app_icon: "@drawable/launch_background"
]
}
production{
dimension "flutter_demo"
applicationId "${defaultConfig.applicationId}.production"
manifestPlaceholders = [
app_name: "flutter_production",
app_icon: "@mipmap/ic_launcher"
]
}
}
① applicationId "${defaultConfig.applicationId}.dev"保证从不同渠道打出来的包名不一样
② manifestPlaceholders = [
app_name: "flutter_production",
app_icon: "@mipmap/ic_launcher"
]
这里实际为AndroidManifest.xml配置了两个可用变量,目的是要实现从不同渠道打出来的包app_name不一样。既然这里只是定义了参数,自然还需要在AndroidManifest.xml文件使用它才能有预期效果:
备注:(多环境和多渠道配置网上有很多资料,而且配置参数也还有很多,需要大家根据实际情况自行配置,这里只记录简单的大致过程)
5. 打包、安装
到此,配置过程完成下面我们可以进行打包,测试一下这些配置能达到什么效果,先看一下
打包命令:
flutter build apk --flavor dev --debug
安装命令:
flutter run --flavor production --release
--flavor dev指定好渠道
--debug 指定好环境
下面是我对打包命令进行了调整,执行flutter clean清理缓存,然后执行4个命令,把不同环境的4个包打好
flutter clean && flutter build apk --flavor dev --debug && flutter build apk --flavor dev --release && flutter build apk --flavor production --debug && flutter build apk --flavor production --release
执行 命令完成打包:
以上操作完成后,似乎只是解决了android原生的多渠道打包问题,而这里我需要解决的是flutter开发过程中的多渠道问题,比如我们需要配置不同环境、渠道的服务器信息,那么我们应该如何解决呢?
打包命令:
flutter build apk --flavor dev --debug -t lib/main_dev.dart
安装命令:
flutter run --flavor production --release -t lib/main_production.dart
如此,我们为不同的环境指定不同的flutter入口文件,即可实现不同环境的区分了
到这里,整个flutter在android端的多渠道问题就解决了
但是有一个问题,就是感觉这个打包的速度还是不理想,如果有同学知道更好的解决办法,欢迎大家留言交流