我设置了flutter应用程序,以针对不同版本使用口味,例如开发,生产等。此过程的必要部分位于 app / build.gradle 文件中,如下所示:
flavorDimensions "flutter-flavours"
productFlavors {
development {
dimension "flutter-flavours"
applicationIdSuffix ".dev"
}
staging {
dimension "flutter-flavours"
applicationIdSuffix ".stg"
}
production {
dimension "flutter-flavours"
}
结果,当我建立 development 发行版时,我是通过 appId -com.example.myapp.dev
来实现的,而我的生产版本< / strong>版本为com.example.myapp
。到目前为止一切顺利。
现在,我决定向应用程序添加一个firebase_admob插件。为此,我将Firebase应用程序放入Firebase帐户,并下载了身份验证所需的相应google-services.json
文件。然后,我必须将此文件放入应用程序的android / app文件夹中。
这是我发现令人讨厌的地方-基本上,我可以为每种应用程序样式创建json
文件,即我可以为生产使用一个json,为开发使用一个json,但是我不知道如何将它们都放入文件夹中,然后gradle将根据发行版本确定要取哪一个。
任何想法,提示将不胜感激!
答案 0 :(得分:0)
我使用带有口味的 google_mobile_ads 插件。以下是我为不同口味设置的方法:
在我的 android/app/build.gradle 中,我只需添加名为 ads_id 的 resValue
productFlavors{
ss {
dimension "flavor-type"
applicationId "com.company.ss"
resValue "string", "app_name", "ss"
resValue "string", "ads_id", "ca-app-pub-xxx~yy"
versionNameSuffix "-ss"
signingConfig signingConfigs.ss
}
rk {
dimension "flavor-type"
applicationId "com.company.rk"
resValue "string", "app_name", "rk"
resValue "string", "ads_id", "ca-app-pub-xxx~yy"
versionNameSuffix "-rk"
signingConfig signingConfigs.rk
}
ns {
dimension "flavor-type"
applicationId "com.company.ns"
resValue "string", "app_name", "ns"
resValue "string", "ads_id", "ca-app-pub-xxxx~yyy"
versionNameSuffix "-ns"
signingConfig signingConfigs.ns
}
}
然后在 AndroidManifest.xml 中获取这个值
<application
android:name="io.flutter.app.FlutterApplication"
android:label="@string/app_name"
android:usesCleartextTraffic="true"
android:icon="@mipmap/launcher_icon">
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/ads_id"/>
<activity
..