提交google-services.json到GitHub

我正在创build一个公共Android项目,并使用Google Sign-In服务。 我正在按照这个教程做。 正如它所说,我已经得到了google-services.json文件。 我需要将上述文件提交给Github吗? 其他开发人员(如果有人贡献)需要这个文件? 还是他们必须创造自己的? 顺便说一下,我正在使用Travis-CI。 这个文件会影响CI构build吗?

Solutions Collecting From Web of "提交google-services.json到GitHub"

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

为新的dev版本使用不同的google-services.json (见这篇文章 )。 将以下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服务。

你会有以下configuration:

 app/ ├── src/ │ ├── main/ │ └── dev/ │ └── google-services.json ├── google-services.json └── build.gradle 

您可以使用:

  • 一个新的构buildtypes
  • 一个新的产品味道(如果你已经有了)

构buildtypes

添加以下构buildtypes:

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

我们不需要在常规构build中构build这个“dev”构build变体,因此如果未指定参数,则可以排除此变体。 将以下内容添加到您的应用程序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 

我们以前确保只有在指定参数build=dev时才会使用这个dev变体

编辑.travis.yml来修改构buildconfiguration:

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

-Pbuild=dev将只使用位于app/src/dev/google-services.json来构build开发版本变体

看看这个使用谷歌服务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键))时扩展生产版本

选中此方法可防止embedded在AndroidManifest.xml中(并且不能从Gradle导入)中使用不同构build变体并使用参数启用生产构build的构造键的承诺。