首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gradle:仅适用于特定风味的插件。

gradle:仅适用于特定风味的插件。
EN

Stack Overflow用户
提问于 2016-09-23 02:34:21
回答 3查看 4.8K关注 0票数 30

我的Android目前为使用不同的推送服务设置了一个口味维度。(一个用于百度推送,另一个用于GCM)我希望我的安卓应用程序只为GCM构建风格而导入google-services。有可能做到吗?

P.S.,因为为了在安卓系统中使用GCM,我必须将apply plugin: 'com.google.gms.google-services'行添加到应用程序/build.gradle文件的底部,作为详细的这里

作为一个解决办法,为了让百度的味道建设成功,我可能需要为百度放置一个虚拟的google-services.json

更新:我似乎在 long github发布线程中找到了答案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-09 11:51:58

在您的build.gradle(应用程序)文件中添加以下代码:

代码语言:javascript
运行
复制
if (getGradle().getStartParameter().getTaskRequests()
        .toString().contains("YourGCMFlavorName")){
    apply plugin: 'com.google.gms.google-services'
}

N.B.:首字母风味名称必须在大写字母

更新2021-11-23:请注意下面Prasoon的解决方案 .

票数 19
EN

Stack Overflow用户

发布于 2019-06-21 00:27:38

我也遇到了同样的问题--我有一个构建多个应用程序的项目,每个应用程序都有两个变体--一个是通过Google Play发布的,另一个是通过Google Play Services和Firebase API发布的,另一个变体是通过Web下载(主要用于AOSP设备),不能包括Google Play Services或Firebase API。

在我们的应用程序/build.gradle文件中,我们不想要任何看似不太明显的奇怪的状态测试,我们的意思是“如果变体的==网络不应用即插即用的google服务”。我们也不想要google-services.json文件的多份拷贝,即每个应用程序一个,我们想要一个包含为Google启用的所有应用程序包的副本。这是因为我们经常添加和删除应用程序,并希望将这些应用作为Firebase控制台中的一个项目来管理。

解决方案是创建一个分发维度,这个维度必须放在flavorDimensions数组中( com.google.gms.google-services插件只在第一个维度中查找google-services.json)。

代码语言:javascript
运行
复制
    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'
        }

分发维度有两个值--“存储”和"web“。

Firebase控制台生成的google-services.json放在app/src/store目录中。

在app/src/web目录中,我们放置了一个包含以下内容的虚拟google-services.json文件:

代码语言:javascript
运行
复制
{
  "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应用包添加到"client":[]数组中)。

GMS和Firebase库仅有条件地包含在商店的口味中:

代码语言:javascript
运行
复制
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'
}

最后,Google服务插件在build.gradle的末尾按照https://firebase.google.com/docs/android/setup中的指示在全球应用

代码语言:javascript
运行
复制
apply plugin: 'com.google.gms.google-services'
票数 5
EN

Stack Overflow用户

发布于 2021-09-30 07:10:29

只需将依赖项应用于build.gradle中特定的构建风味定义

代码语言:javascript
运行
复制
android{
      productFlavors {

         flavourName{
         apply plugin: 'com.google.gms.google-services'
        }
       }
     }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39651693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档