我是否需要为每个productFlavor新的google-services.json?

时间:2016-06-26 02:40:21

标签: android google-analytics android-productflavors google-developers-console

因此,我从一个代码库构建了一组应用程序,并且我使用productFlavors来自定义每个应用程序。

每种风味都需要拥有自己的Google Analytics跟踪ID,因此我开始为每种风格生成新的google-services.json,并且我发现Google Developer Console存在限制。< / p>

问题是,如何为所有口味使用相同的json文件? (每种风味都有自己的applicationID)

或者我的替代方案是什么?我只需要让Google Analytics跟踪工作,这就是我开始使用该文件的原因。

我考虑手动编辑每个文件以更改其package_name和tracking_id,但我不确定这是否适合生产...

2 个答案:

答案 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文件夹中进行生产。

enter image description here

然后我们需要为那些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文件夹中。希望能帮助到你! :)