Jay*_*lya 16 android github travis-ci google-signin
我正在创建一个公共android项目,我正在使用Google登录服务.我是根据本教程做的.正如它所说,我有google-services.json文件.我需要将上述文件提交给Github吗?其他开发者(如果有人贡献)需要这个文件吗?或者他们必须创建自己的?顺便说一句,我正在使用Travis-CI.此文件是否会影响CI构建?
Ber*_*tel 16
您可以创建新的构建变体并存储模板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"
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果您还使用Google Analytics或GCM服务,我已扩展此Google服务.
您将具有以下配置:
app/
??? src/
? ??? main/
? ??? dev/
? ??? google-services.json
??? google-services.json
??? build.gradle
Run Code Online (Sandbox Code Playgroud)
你可以使用:
添加以下构建类型:
buildTypes {
dev {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
我们不需要在常规构建中构建此"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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
将dev产品风味添加到现有产品中:
productFlavors {
full {
}
dev {
}
}
Run Code Online (Sandbox Code Playgroud)
要从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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,将您的应用模块添加google-services.json到.gitignore:
app/google-services.json
Run Code Online (Sandbox Code Playgroud)
我们之前已确保dev仅在build=dev指定参数时使用此变体
编辑.travis.yml以修改构建配置:
script:
- ./gradlew clean build -Pbuild=dev
Run Code Online (Sandbox Code Playgroud)
-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
Run Code Online (Sandbox Code Playgroud)
请注意,此方法不仅限于CI,并且可以在需要生产google-services.json或不同时生成构建时进行扩展AndroidManifest.xml(具有某些特定属性,如fabric.io键)
检查此方法以防止嵌入在AndroidManifest.xml中的结构密钥的承诺(并且无法从gradle导入)使用不同的构建变量并使用参数来启用生成构建.
| 归档时间: |
|
| 查看次数: |
3140 次 |
| 最近记录: |