Dos proyectos de android comparten módulo común en el mismo repositorio usando gradle

Estamos creando una aplicación (en realidad 2) que se divide en 2 proyectos separados pero que comparte el mismo repositorio GIT (2 carpetas separadas en la raíz git). Es una aplicación para handheld y otra para otra plataforma. Pero deberían compartir algún código como Utils, API, etc.

La estructura de carpetas se ve así:

GIT Root
– Proyecto (Proyecto)
— App 1 (aplicación de Android)
— App 2 (aplicación para Android)
— Común (Biblioteca de Android)

App1 y App2 deben ser capaces de llegar a código de común, pero no la otra manera, por supuesto.

Intentó hacer como arriba y usar Gradle pero no parece funcionar. Sé que compartir el mismo reporte de git para ambas aplicaciones puede no ser la mejor manera de manejar este escenario, pero no tengo opciones aquí.

¿Crees que esto es posible hacer de alguna manera? (Tal vez no estoy entendiendo los módulos correctamente o algo así)

Soy nuevo en Gradle lo que lo hace aún más difícil.

Esto no es demasiado difícil si los tres proyectos están en el mismo repositorio de Git. Aquí está el esqueleto de cómo sus proyectos deben ser configurados:

App1 (Android application) |_ build.gradle |_ src App2 (Android application) |_ build.gradle |_ src Common (Android library) |_ build.gradle |_ src settings.gradle build.gradle 

El archivo build.gradle nivel build.gradle puede tener una configuración de gradle común que utilizará para todos los subproyectos

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } allprojects { repositories { mavenCentral() } } 

Asegúrese de que el archivo settings.gradle incluya todos sus proyectos:

 include ':App1' include ':App2' include ':Common' 

Configuración Common para ser un proyecto de biblioteca de Android. En el archivo build.gradle para Common añada la línea:

 apply plugin: 'com.android.library' 

Configure los otros dos proyectos para que sean aplicaciones de Android e incluya el proyecto Common como una dependencia.

 apply plugin: 'com.android.application' dependencies { compile project(':Common') : : } 

Usted debe tener tres repos de git para esto. App1, App2 y Common.

Hacer común un proyecto de biblioteca usando gradle.

 apply plugin: 'com.android.library' 

Puede utilizar el complemento android maven para construir el aar localmente y hacerlo disponible para cada aplicación secundaria. Añadir classpath 'com.github.dcendents:android-maven-plugin:1.2' Y apply plugin: 'com.github.dcendents.android-maven'

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' classpath 'com.github.dcendents:android-maven-plugin:1.2' } } apply plugin: 'com.github.dcendents.android-maven' 

Definir el grupo y la versión de la aplicación de biblioteca

 group = 'com.foo.example' version = '1.0.0-SNAPSHOT' 

Instalar la aplicación de biblioteca localmente utilizando ./gradlew installDebug

Aplicaciones para niños

Ahora, la aplicación principal se puede incluir en la aplicación secundaria como una dependencia. Agregue la dependencia a build.gradle.

 compile('com.foo.example:library:1.0.0-SNAPSHOT@aar') {transitive = true} 

Cada vez que realices un cambio en la aplicación de la biblioteca, tendrás que volver a instalarla. A continuación, tendrá que volver a sincronizar los archivos gradle en su aplicación para niños. Herramientas -> Android -> Proyecto de sincronización con archivos Gradle

  • Eliminación del elemento AndroidManifest con los sabores de producto gradle
  • Cómo cambiar el nombre de apk usando gradle como este formato?
  • Cómo acceder a un buildConfigField en otro lugar dentro de un archivo de compilación de gradle
  • Con dos directorios res por variante de compilación, Gradle detuvo el seguimiento de los cambios en los archivos de recursos
  • Error: Error de ejecución de la tarea ': app: dexDebug'. Com.android.ide.common.process.ProcessException
  • Error de compilación de Android Studio Gradle al agregar SDK de Facebook
  • La ejecución de Gradle falló para la tarea 'Project: processDebugManifest'
  • cómo hacer fuera de árbol android construye con gradle
  • Depósitos personalizados de Gradle y resolución de dependencias
  • Android gradle construir que la cobertura de código para pruebas robolectric
  • Android XML: RuntimeException: No se pudo resolver el atributo en el índice 6
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.