我是否需要为每个产品口味添加一个新的 google-services.json?
Do I need a new google-services.json for each productFlavor?
因此,我正在从一个代码库构建一组应用程序,并且我正在使用 productFlavors 来自定义每个应用程序。
每种口味都需要有自己的 Google 分析跟踪 ID,所以我开始为每种口味生成一个新的 google-services.json,我发现有Google 开发者控制台的限制。
问题是,如何为所有口味使用同一个 json 文件? (每种口味都有自己的 applicationID)
或者我有什么选择?我只需要让 Analytics 跟踪正常工作,这就是我什至首先开始使用该文件的原因。
我考虑过手动编辑每个文件以更改其 package_name 和 tracking_id,但我不确定这对生产来说是否可行...
如果每种风格都有自己的 applicationID,并且您希望为 Google Analytics 使用不同的跟踪 ID,那么您需要为每种风格生成 google-services.json。
请注意,由于google-services.json必须放在app文件夹下,需要手动复制google-services.json一个flavor到app每当你改变口味时文件夹。
这是我的方法:
假设我们有两种风格,开发和生产。然后把开发用的google-services.json放到src/development/google-services文件夹里面。并用于 src/production/google-services 文件夹中的生产。
然后我们需要为那些google-service.json个文件配置复制任务。将此脚本放入您的 build.gradle 应用程序文件夹下。对我来说,我把这个脚本放在 android {...}
.
下
android {
...
}
task switchToDevelopment(type: Copy) {
description = 'Switches to DEVELOPMENT google-services.json'
from "src/development/google-services"
include "google-services.json"
into "."
}
task switchToProduction(type: Copy) {
description = 'Switches to PRODUCTION google-services.json'
from "src/production/google-services"
include "google-services.json"
into "."
}
afterEvaluate {
processDevelopmentDebugGoogleServices.dependsOn switchToDevelopment
processDevelopmentReleaseGoogleServices.dependsOn switchToDevelopment
processProductionDebugGoogleServices.dependsOn switchToProduction
processProductionReleaseGoogleServices.dependsOn switchToProduction
}
每当您更改风味时,都会执行此脚本。它会在执行 process[FlavorBuildtypes]GoogleServices
之前将正确的 google-services.json 的 flavor 复制到 app 文件夹。希望能帮助到你! :)
所以我一直在研究它,结果你并不真的需要一个新的google-services.json
每个口味.
一开始看起来不太直观,但是当你创建json文件时,你需要设置相同的应用名称 适用于所有口味,只是 包名称不同 .
例如:当您处于 this step 时,应用程序名称将是 MyApp
,程序包名称将是 my.app.free
。
继续直到到达下载文件的步骤为止。然后,再次转到该步骤,现在设置相同的 App 名称(在本例中为 MyApp
),但使用新的包名称(例如:my.app.pro
)。
当您下载新的 google-services.json
时,将为两个包进行设置,并使用不同的分析。
因此,我正在从一个代码库构建一组应用程序,并且我正在使用 productFlavors 来自定义每个应用程序。
每种口味都需要有自己的 Google 分析跟踪 ID,所以我开始为每种口味生成一个新的 google-services.json,我发现有Google 开发者控制台的限制。
问题是,如何为所有口味使用同一个 json 文件? (每种口味都有自己的 applicationID)
或者我有什么选择?我只需要让 Analytics 跟踪正常工作,这就是我什至首先开始使用该文件的原因。
我考虑过手动编辑每个文件以更改其 package_name 和 tracking_id,但我不确定这对生产来说是否可行...
如果每种风格都有自己的 applicationID,并且您希望为 Google Analytics 使用不同的跟踪 ID,那么您需要为每种风格生成 google-services.json。
请注意,由于google-services.json必须放在app文件夹下,需要手动复制google-services.json一个flavor到app每当你改变口味时文件夹。
这是我的方法:
假设我们有两种风格,开发和生产。然后把开发用的google-services.json放到src/development/google-services文件夹里面。并用于 src/production/google-services 文件夹中的生产。
然后我们需要为那些google-service.json个文件配置复制任务。将此脚本放入您的 build.gradle 应用程序文件夹下。对我来说,我把这个脚本放在 android {...}
.
android {
...
}
task switchToDevelopment(type: Copy) {
description = 'Switches to DEVELOPMENT google-services.json'
from "src/development/google-services"
include "google-services.json"
into "."
}
task switchToProduction(type: Copy) {
description = 'Switches to PRODUCTION google-services.json'
from "src/production/google-services"
include "google-services.json"
into "."
}
afterEvaluate {
processDevelopmentDebugGoogleServices.dependsOn switchToDevelopment
processDevelopmentReleaseGoogleServices.dependsOn switchToDevelopment
processProductionDebugGoogleServices.dependsOn switchToProduction
processProductionReleaseGoogleServices.dependsOn switchToProduction
}
每当您更改风味时,都会执行此脚本。它会在执行 process[FlavorBuildtypes]GoogleServices
之前将正确的 google-services.json 的 flavor 复制到 app 文件夹。希望能帮助到你! :)
所以我一直在研究它,结果你并不真的需要一个新的google-services.json
每个口味.
一开始看起来不太直观,但是当你创建json文件时,你需要设置相同的应用名称 适用于所有口味,只是 包名称不同 .
例如:当您处于 this step 时,应用程序名称将是 MyApp
,程序包名称将是 my.app.free
。
继续直到到达下载文件的步骤为止。然后,再次转到该步骤,现在设置相同的 App 名称(在本例中为 MyApp
),但使用新的包名称(例如:my.app.pro
)。
当您下载新的 google-services.json
时,将为两个包进行设置,并使用不同的分析。