flutter打包的app有多大_解决Flutter在android端多渠道打包问题

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文件使用它才能有预期效果:

4468641933853f236d114c4634839ceb.png

备注:(多环境和多渠道配置网上有很多资料,而且配置参数也还有很多,需要大家根据实际情况自行配置,这里只记录简单的大致过程)

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

执行 命令完成打包:

2c374756fd94574e35ec031a485221f1.png

以上操作完成后,似乎只是解决了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端的多渠道问题就解决了

但是有一个问题,就是感觉这个打包的速度还是不理想,如果有同学知道更好的解决办法,欢迎大家留言交流

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值