因此,我从一个代码库构建了一组应用程序,并且我使用productFlavors来自定义每个应用程序。
每种风味都需要拥有自己的Google Analytics跟踪ID,因此我开始为每种风格生成新的google-services.json,并且我发现Google Developer Console存在限制。< / p>
问题是,如何为所有口味使用相同的json文件? (每种风味都有自己的applicationID)
或者我的替代方案是什么?我只需要让Google Analytics跟踪工作,这就是我开始使用该文件的原因。
我考虑手动编辑每个文件以更改其package_name和tracking_id,但我不确定这是否适合生产...
答案 0 :(得分:2)
所以我一直在研究它,结果发现你不确实需要一个新的google-services.json
用于每个风味。
一开始看起来并不那么直观,但是当您创建json文件时,您需要设置相同的 应用名称 适用于所有口味,只有不同的包名称 。
例如:当您在this step时,应用名称为MyApp
,包名称为my.app.free
。
继续执行下载文件的步骤。然后,再次转到该步骤,现在设置相同的应用程序名称(在此示例中为MyApp
),但使用新的包名称(例如:my.app.pro
)。
当您下载新的google-services.json
时,它将针对这两个软件包进行设置,并使用不同的分析。
答案 1 :(得分:1)
如果每种风味都有自己的applicationID,并且您想要为Google Analytics提供不同的跟踪ID,那么您需要为每种风格生成google-services.json。
请注意,因为google-services.json必须放在app文件夹下,所以每当你改变风味时,你都需要手动将google-services.json的风味复制到app文件夹。
这是我的方法:
我们说我们有两种口味,开发和生产。然后将google-services.json放入src / development / google-services文件夹中进行开发。并在src / production / google-services文件夹中进行生产。
然后我们需要为那些google-service.json文件配置复制任务。将此脚本放在app文件夹下的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复制到app文件夹中。希望能帮助到你! :)