首先我们在android/app/build.gradle文件夹中设置如下代码:
flavorDimensions "environment"
productFlavors {
dev {
dimension "environment"
applicationId "com.team.v1"
versionNameSuffix "-dev"
resValue "string", "app_name", "V1"
}
production {
dimension "environment"
applicationId "com.team2.v2"
versionNameSuffix ""
resValue "string", "app_name", "V1"
}
}
先别管啥意思,配置上再说,有问题再说,我上面是设置了两个不同环境(开发和正式)。
以上代码放在下图android层级下面,如图所示:
为了让resValue的值生效,我们需要修改清单配置文件:
如下:
那么以上针对不同环境设置不同APP名称的配置就完成了。
那么我们怎么运行呢。
我们需要修改flutter的代码,原生代码如上已经修改完成,flutter修改如下:
原有的main.dart我们可以不动,然后copy这个文件重新生成两个main文件,main_dev.dart和main_production.dart。
这些文件有啥区别呢,其实大部分都一样,他们都只是APP的入口文件,你可以像之前的main.dart文件一样在里面做不同的初始化,例如网络的初始化,开发环境和测试环境的接口请求域名的初始化。
例如我的:
至此,我们的项目工程的设置都完成了。
那么我要怎么编译和打包呢?
我以Android studio为例,如图:
点击 Edit Configurations按钮,进入如下页面:
给build flavor配置上dev,然后apply后,保存退出,你这个时候运行,那么它就是你在原生的dev配置了。
同理你可以新建运行入口文件:
点击添加,选择flutter:
然后选择Dart的入口文件,已经自定义你自己的入口名称,同时配置build flavor(这个一定写的是你在原生配置文件中的名称)
点击保存,那么你就可以选择不同的入口文件,进行运行编译了。
打包的话命令区分也是一样。
flutter build apk --release --flavor dev -t lib/main_dev.dart
flutter build appbundle --release --flavor dev -t lib/main_dev.dart
那么完整的flutter android端的渠道打包就是如此。
写的比较糙,将近看吧,其实上面也不是最优方案,还可以优化,有空再写优化篇,都是日常编码的一些记录。
下一篇,分享多环境配置多firebase的工程配置。