有条件地应用GMS google-services插件

时间:2017-07-30 10:49:26

标签: android kindle-fire google-play-services

多年来,我一直非常小心,不会将Google-Android依赖项引入我的Android应用程序,并且有两种方式可以保留这种隔离,withAmazonwithGoogle

app
 |_ main
 |_ test
 |_ withAmazon
 |_ withGoogle

最近,我一直在尝试 Firebase Analytics ,这是一个非常Google OHA only的产品,我不相信它是在Google生态系统之外工作的(尽管有some reports确实如此)。 firebase的部分设置是应用google-services插件。

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

但是,withAmazon风格不包含google-service.json ...因为......好吧,不适合谷歌。

app
 |_ main
 |_ test
 |_ withAmazon
    |- java
    |- AndroidManifest.xml
 |_ withGoogle
    |- java
    |- AndroidManifest.xml
    |- google-services.json

...但是因为Gradle plugins appear to need to have to be applied project wide是否可以仅将gms插件应用于其中一种口味?在编译Amazon风格时,上述情况下的构建失败,因为它抱怨google-services.json不存在......这是正确的。

现在,我的解决方法是将google-services.json移到app/目录下。问题解决了。然而,谷歌和谷歌之间的明显鸿沟并不合适。 “纯粹的”Android操作系统正在被侵占。

慷慨接受的任何帮助。

1 个答案:

答案 0 :(得分:2)

我通过修改我的父build.gradle文件解决了这个问题;

if (getGradle().getStartParameter().getTaskRequests().toString().contains(withGoogleFlavor)){
    apply plugin: 'com.google.gms.google-services'
}

现在,插件(以及相关的Google Play服务依赖项)未添加到我的应用的亚马逊风格中。此外,google-services.json现在可以追溯到" withGoogle"风味。

注意:withGoogle是在其他地方定义的带有值" withGoogle"的def。 致谢:https://stackoverflow.com/a/43336869/1348379