我的Android gradle目前为使用不同的推送服务设置了风味维度。 (一个用于baidu推送,一个用于GCM)我想让我的Android应用程序仅导入google-services
以获得GCM推送构建风格。有可能吗?
PS 因为要在Android中使用GCM,我必须将apply plugin: 'com.google.gms.google-services'
行添加到app / build.gradle文件的底部,如详细here
为了让baidu风味成功构建,我可能需要为百度放置一个虚拟google-services.json
。
更新 我似乎在this长github问题线程中找到答案。
答案 0 :(得分:4)
在您的build.gradle文件中添加以下代码:
if (!getGradle().getStartParameter().getTaskRequests()
.toString().contains("YOUR_GCM_FLAVOR_NAME")){
apply plugin: 'com.google.gms.google-services'
}
答案 1 :(得分:0)
我遇到了同样的问题-我有一个构建多个应用程序的项目,每个应用程序都有两个变体,一个变体通过Google Play分发,并使用Google Play Services和Firebase API,另一个变体通过Web下载进行分发(主要用于AOSP设备),并且不能包含Google Play服务或Firebase API。
在我们的app / build.gradle文件中,我们不希望进行任何看起来不太明显的时髦条件测试,这意味着“如果变量== web,则不应用Google插件服务”。我们也不想有google-services.json文件的多个副本,即每个应用程序一个,我们想要一个包含所有支持Google Play服务的应用程序捆绑包的副本。这是因为我们非常定期地添加和删除应用程序,并希望在Firebase控制台中将这些应用程序作为一个项目进行管理。
解决方案是创建一个分布维度,该维度必须首先放置在flavorDimensions数组中(com.google.gms.google-services插件仅在 google-services.json < / em>)。
flavorDimensions 'distribution', 'application'
productFlavors {
store {
dimension 'distribution'
}
web {
dimension 'distribution'
applicationIdSuffix ".nogms"
}
app1 {
dimension 'application'
applicationId 'com.example.app1'
}
app2 {
dimension 'application'
applicationId 'com.example.app2'
}
分布维度具有两个值-“商店”和“网络”
由Firebase控制台生成的 google-services.json 放置在目录 app / src / store 中。
在 app / src / web 目录中,我们放置了一个虚拟google-services.json文件,其内容如下:
{
"project_info": {
"project_number": "0",
"project_id": "api-project-0"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:0:android:0",
"android_client_info": {
"package_name": "com.example.app1.nogms"
}
},
"api_key": [
{
"current_key": "none"
}
]
},
{
"client_info": {
"mobilesdk_app_id": "1:0:android:0",
"android_client_info": {
"package_name": "com.example.app2.nogms"
}
},
"api_key": [
{
"current_key": "none"
}
]
}
]
}
这使插件保持快乐状态。 (需要将非GMS应用捆绑包添加到“客户端”:[]数组中。)
GMS和Firebase库仅有条件地包含在商店口味中:
dependencies {
storeImplementation 'com.google.firebase:firebase-core:16.0.8'
storeImplementation 'com.google.firebase:firebase-iid:17.1.2'
storeImplementation 'com.google.firebase:firebase-messaging:17.6.0'
}
最后,按照https://firebase.google.com/docs/android/setup
的指示,在build.gradle的末尾全局应用了Google Play服务插件。apply plugin: 'com.google.gms.google-services'