Android Studio:如何在产品风格中排除google-services模块?

use*_*297 9 java android gradle android-productflavors

在我的Android项目中,有几种产品风格:

buildTypes {
    release {}
    debug {}
    staging {}
}

productFlavors {
    freeVersion {}
    proVersion {}
    partnerVersion {}
}
Run Code Online (Sandbox Code Playgroud)

另外,我使用Google Analytics:

apply plugin: 'com.google.gms.google-services'

dependencies {
    compile 'com.google.android.gms:play-services-analytics:8.4.0'
}
Run Code Online (Sandbox Code Playgroud)

如何在其中一个中排除google-services?例如,在:

freeVersion {}
Run Code Online (Sandbox Code Playgroud)

ana*_*bek 9

请注意使用freeCompile和声明变量flavor以有条件地应用插件.

apply plugin: 'com.android.application'

def flavor

android {

    ....

    ....

    productFlavors {
        free {
            applicationId "com.anandbibek.builditbigger.free"
            flavor = "free"
        }
        paid {
            applicationId "com.anandbibek.builditbigger.paid"
            flavor = "paid"
        }
    }
}

dependencies {

    // Added for AdMob
    freeCompile 'com.google.firebase:firebase-ads:9.6.1'

    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.google.code.findbugs:jsr305:2.0.1'

}
if(flavor == "free") {
    apply plugin: 'com.google.gms.google-services'
}
Run Code Online (Sandbox Code Playgroud)

确保将google-services.json文件放在特定于flavor的文件夹中.在我的情况下,我app/src/free只是把它.classpath 'com.google.gms:google-services:3.0.0'在主项目gradle文件中使用时,此工具可用.

  • 这不起作用(不再?),因为该值将始终设置为最后定义的风味:-( (2认同)

app*_*tus 7

另一个解决方案是禁用 google-services 插件添加的任务 - 在这里,如果 flavorName 不是“freeVersion”,我会启用该任务,但此逻辑可以清楚地更新为查看变体 buildType。

apply plugin: 'com.google.gms.google-services'

// must be after the plugin is applied otherwise no tasks will be found
android.applicationVariants.all { variant ->
    def googleTask = tasks.findByName("process${variant.name.capitalize()}GoogleServices")
    googleTask.enabled = !"freeVersion".equals(variant.flavorName)
}
Run Code Online (Sandbox Code Playgroud)


Joo*_*ins -2

我最初误读了这个问题。要排除免费版本,您可以使用 proVersionCompile 和 PartnerVersionCompile 以及所需的依赖项来排除免费版本。

dependencies {
    proVersionCompile 'com.google.android.gms:play-services-analytics:8.4.0'
    partnerVersionCompile 'com.google.android.gms:play-services-analytics:8.4.0'
}
Run Code Online (Sandbox Code Playgroud)