【问题标题】:Do I need a new google-services.json for each productFlavor?我需要为每个 productFlavor 一个新的 google-services.json 吗?
【发布时间】:2016-10-28 08:01:54
【问题描述】:

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

每种风格都需要有自己的 Google Analytics 跟踪 ID,所以我开始为每种风格生成一个新的 google-services.json,我发现 Google 开发者控制台有一个限制。

问题是,我怎样才能为所有口味使用相同的 json 文件? (每种风味都有自己的 applicationID)

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

我曾考虑手动编辑每个文件以更改其 package_name 和 tracking_id,但我不确定这对于生产来说是否可行...

【问题讨论】:

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


    【解决方案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 之前将一个flavor 的正确google-services.json 复制到app 文件夹。希望能帮助到你! :)

    【讨论】:

      【解决方案2】:

      所以我一直在研究它,结果发现你并不真的需要一个新的google-services.json 来为每个风味

      一开始似乎不太直观,但是当你创建 json 文件时,你需要为所有风格设置相同的 App name,只是不同的包名称

      例如:当您在 this step 中时,应用名称将是 MyApp,而包名称将是 my.app.free

      继续直到下载文件的步骤结束。然后,再次执行该步骤,现在设置相同的应用名称(在本例中为 MyApp),但使用新的包名称(例如:my.app.pro)。

      当您下载新的google-services.json 时,将为这两个包设置它,并使用不同的分析。

      【讨论】:

        猜你喜欢
        • 2017-05-03
        • 2016-03-25
        • 2021-05-29
        • 1970-01-01
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        相关资源
        最近更新 更多