当前位置:  开发笔记 > 编程语言 > 正文

将google-services.json提交给GitHub

如何解决《将google-services.json提交给GitHub》经验,为你挑选了1个好方法。

我正在创建一个公共android项目,我正在使用Google登录服务.我是根据本教程做的.正如它所说,我有google-services.json文件.我需要将上述文件提交给Github吗?其他开发者(如果有人贡献)需要这个文件吗?或者他们必须创建自己的?顺便说一句,我正在使用Travis-CI.此文件是否会影响CI构建?



1> Bertrand Mar..:

您可以创建新的构建变体并存储模板google-services.json,以用于在应用程序中的CI平台上构建build.gradle.

google-services.json对新dev构建变体使用不同的(请参阅此文章).将以下google-services.json模板添加到app/src/dev 文件夹:

{
  "project_info": {
    "project_number": "",
    "project_id": ""
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "1:123456789012:android:1234567890123456",
        "android_client_info": {
          "package_name": "com.your.package"
        }
      },
      "oauth_client": [
        {
          "client_id": "",
          "client_type": 3
        },
        {
          "client_id": "",
          "client_type": 1,
          "android_info": {
            "package_name": "com.your.package",
            "certificate_hash": ""
          }
        }
      ],
      "api_key": [
        {
          "current_key": ""
        }
      ],
      "services": {
        "analytics_service": {
          "status": 2,
          "analytics_property": {
            "tracking_id": ""
          }
        },
        "appinvite_service": {
          "status": 1,
          "other_platform_oauth_client": []
        },
        "ads_service": {
          "status": 1
        }
      }
    }
  ],
  "configuration_version": "1"
}

请注意,如果您还使用Google Analytics或GCM服务,我已扩展此Google服务.

您将具有以下配置:

app/
??? src/
?   ??? main/
?   ??? dev/
?       ??? google-services.json
??? google-services.json
??? build.gradle

你可以使用:

一种新的构建类型

一种新的产品风味(如果你已经有了)

构建类型

添加以下构建类型:

buildTypes {

    dev {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

我们不需要在常规构建中构建此"dev"构建变体,因此如果未指定参数,则可以排除此变体.将以下内容添加到您的应用中build.gradle:

def build_param = "${build}";

if (build_param != "dev") {
    //exclude production build
    android.variantFilter { variant ->
        if (variant.buildType.name.equals('dev')) {
            variant.setIgnore(true);
        }
    }
} else {
    //exclude all except production build
    android.variantFilter { variant ->
        if (!variant.buildType.name.equals('dev')) {
            variant.setIgnore(true);
        }
    }
}

产品风味

dev产品风味添加到现有产品中:

productFlavors {

    full {
    }

    dev {
    }
}

要从dev常规版本中删除此产品风格:

def build_param = "${build}";

if (build_param != "dev") {
    //exclude dev
    android.variantFilter { variant ->
        if (variant.getFlavors().get(0).name.equals('dev')) {
            variant.setIgnore(true);
        }
    }
} else {
    //exclude all but dev
    android.variantFilter { variant ->
        if (!variant.getFlavors().get(0).name.equals('dev')) {
            variant.setIgnore(true);
        }
    }
}

最后,将您的应用模块添加google-services.json.gitignore:

app/google-services.json

我们之前已确保dev仅在build=dev指定参数时使用此变体

编辑.travis.yml以修改构建配置:

script:
  - ./gradlew clean build -Pbuild=dev

-Pbuild=dev将仅使用google-services.json位于中的构建开发构建变体app/src/dev/google-services.json

看一下使用google-services Google项目的示例项目

在Travis日志中,您可以看到正在解析的JSON文件是dev构建变体的文件:

Parsing json file: /home/travis/build/bertrandmartel/android-googlesignin/app/src/dev/google-services.json 

额外注意

请注意,此方法不仅限于CI,并且可以在需要生产google-services.json或不同时生成构建时进行扩展AndroidManifest.xml(具有某些特定属性,如fabric.io键)

检查此方法以防止嵌入在AndroidManifest.xml中的结构密钥的承诺(并且无法从gradle导入)使用不同的构建变量并使用参数来启用生成构建.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有