Comenzando google-services.json a GitHub

Estoy creando un proyecto android público y estoy usando el servicio de inicio de sesión de Google. Lo estoy haciendo de acuerdo con este tutorial . Como dice, tengo el archivo google-services.json. ¿Necesito confirmar el archivo anterior a Github? ¿Otros desarrolladores (si alguien contribuye) necesitan este archivo? ¿O tienen que crear allí propio? Por cierto, estoy usando Travis-CI. ¿Afectará este archivo a la construcción de CI?

Puede crear una nueva variante de construcción y almacenar una plantilla google-services.json que se utilizará para su creación en su plataforma CI en su aplicación build.gradle .

Utilice un google-services.json diferente para la nueva variante de generación de dev (consulte esta publicación ). Agregue la siguiente plantilla google-services.json a la carpeta app/src/dev :

 { "project_info": { "project_number": "", "project_id": "" }, "client": [ { "client_info": { "mobilesdk_app_id": "", "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" } 

Tenga en cuenta que he extendido este google-servicios en caso de que también utilice Google Analytics o GCM servicio.

Tendrías la siguiente configuración:

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

Puede utilizar:

  • Un nuevo tipo de construcción
  • Un sabor nuevo producto (si ya tiene los ya existentes)

Tipo de construcción

Agregue el siguiente tipo de compilación :

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

No necesitamos construir esta variante de construcción "dev" en la compilación regular, por lo que puede excluir esta variante si no se especifica un parámetro. Añada lo siguiente a su aplicación 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); } } } 

Sabor del producto

Agregue el sabor del producto dev a los ya existentes:

 productFlavors { full { } dev { } } 

Para quitar este sabor de producto dev de la compilación regular:

 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); } } } 

Eventualmente, agregue su módulo de aplicación google-services.json a .gitignore :

 app/google-services.json 

Anteriormente nos hemos asegurado de que esta variante dev sólo se utilizará cuando se especifique parameter build=dev

Editar .travis.yml para modificar la configuración de construcción:

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

-Pbuild=dev solo creará la variante de construcción de dev utilizando google-services.json ubicado en app/src/dev/google-services.json

Eche un vistazo a este proyecto de ejemplo que está utilizando el proyecto google-services de Google

En el registro de Travis , puede ver que el archivo JSON que se está analizando es el de la variante de construcción dev :

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

Nota adicional

Tenga en cuenta que este método no se limita a CI y puede ampliarse para su generación de producción cuando requiera una producción google-services.json o un AndroidManifest.xml diferente (con algunas propiedades específicas como la clave fabric.io )

Compruebe este método para evitar el compromiso de las teclas de tejido incrustadas en AndroidManifest.xml (y no se pueden importar desde gradle) que esté utilizando una variante de construcción diferente y utilizando un parámetro para habilitar la generación de producción.

  • ¿Es gradlew obligatorio para que travis CI funcione?
  • Dependencias de Gradle con Travis CI en proyecto Android
  • Travis CI Build falla en la aplicación de Android Versión de major.minor no compatible 52
  • Variantes de construcción de Android en travis.ci
  • ¿Cómo debo configurar Travis-CI para una biblioteca de Android?
  • Travis CI para Android
  • Travis CI Android - No encuentra la versión que coincide
  • La construcción de Travis CI no funciona con Android Constraint Layout
  • ¿Hay una manera de iniciar el emulador de Android en Travis CI construir?
  • Travis CI se queda atascado en la creación de herramientas de construcción en Android
  • Travis CI skip pruebas (Gradle Android proyecto)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.