我正在创建一个公共android项目,我正在使用Google登录服务.我是根据本教程做的.正如它所说,我有google-services.json文件.我需要将上述文件提交给Github吗?其他开发者(如果有人贡献)需要这个文件吗?或者他们必须创建自己的?顺便说一句,我正在使用Travis-CI.此文件是否会影响CI构建?
您可以创建新的构建变体并存储模板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导入)使用不同的构建变量并使用参数来启用生成构建.