← 航宇的学习笔记

Flutter 用一套代码打两个安卓包:productFlavors 入门

Flutter · Android · Gradle约 3 分钟

同一个 Flutter 项目,有时想打出两个 App:比如一个正式版、一个试用版,而且要能同时装在一台手机上。安卓的 productFlavors 就是干这个的。

在 build.gradle.kts 里声明 flavor

android {
    flavorDimensions += "app"
    productFlavors {
        create("main") {
            dimension = "app"
            manifestPlaceholders["appName"] = "我的应用"
        }
        create("trial") {
            dimension = "app"
            applicationId = "com.example.trial"   // 包名不同,才能和正式版同时安装
            manifestPlaceholders["appName"] = "我的应用(试用)"
        }
    }
}

然后在 AndroidManifest.xml 里把应用名改成占位符:android:label="${appName}",两个包在桌面上就会显示不同的名字。

不同的入口文件

如果两个版本启动时要做的事不一样,可以各写一个入口,比如 lib/main.dart 和 lib/main_trial.dart,打包时用 -t 指定:

flutter build apk --release --flavor main
flutter build apk --release --flavor trial -t lib/main_trial.dart

打出来的文件名会带上 flavor:build/app/outputs/flutter-apk/app-trial-release.apk。

加了 flavor 之后要注意的