0

所以,我从一个代码库构建了一组应用程序,并且使用productFlavors来定制每个应用程序。我是否需要为每个productFlavor添加一个新的google-services.json?

每种口味都需要对谷歌分析自身的跟踪ID,所以我就开始生成新的谷歌,services.json针对每种口味,而且我发现有在谷歌开发者控制台的限制。

的问题是,我怎么可以使用所有的味道一样JSON文件? (每种风格都有自己的applicationID)

或者我有什么办法?我只需要让Google Analytics跟踪工作,这就是为什么我甚至开始使用该文件的原因。

我想到了手动编辑每个文件,以改变其程序包和TRACKING_ID,但我不知道这是生产一种可行的选择......

回答

2

所以我一直在寻找到它,并证明你真的需要为每个味道一个新google-services.json

它似乎并没有在第一次那么多直观的,但是当你正在创建的JSON文件,你需要设置相同的应用名称:所有的口味,只是不同包名

例如:当您在this step中时,应用程序名称为MyApp,包名称为my.app.free

继续,直到那里你得到你下载的文件步骤结束。然后,只要到这一步了一遍,现在设置了相同的应用程序名称(本例中MyApp),但随着新包的名字(例如:my.app.pro)。

当您下载新的google-services.json时,它将针对这两个软件包以及不同的分析进行设置。

0

如果每个味道都有自己的applicationID和你想有一个不同的跟踪Google Analytics的ID,那么您需要为每种口味生成google-services.json。

请小心,因为谷歌-services.json必须在应用程序文件夹下放置,你需要时,你变了味道手动复制的味道谷歌,services.json到app文件夹。

这里是我的方式做到这一点:

比方说,我们有两种口味,开发和生产。然后在src/development/google-services文件夹中放置用于开发的google-services.json。并在src/production/google-services文件夹中进行生产。

enter image description here

这时我们就需要配置这些谷歌 - 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文件复制到应用程序文件夹中。希望能帮助到你! :)

相关问题