Múltiples aplicaciones de Android dependiendo de la biblioteca de Android con gradle
Todavía estoy aprendiendo gradle pero por lo que he leído, me pregunto si esto es posible.
Tengo varias aplicaciones de Android (app1, app2, app3), que depende de una biblioteca de Android (L). La biblioteca de Android (L) dependería de bibliotecas externas como volley, y las aplicaciones dependerían de bibliotecas externas como picasso.
- Gradle no logra resolver la dependencia en Android Studio
- compilar appcompat v7: 26. + error al agregar servicios de reproducción al proveedor de ubicación de fusión
- Cambiar las ubicaciones de salida de ndk-build
- No se puede resolver el símbolo 'tools' y 'GradleException'
- Gradle no puede resolver dependencias al crear un proyecto de Android Studio
No quiero copias múltiples de la biblioteca y volley para cada aplicación. Aquí es lo que estaba pensando mi estructura carpeta / gradle se vería así:
app1/ settings.gradle build.gradle src/ com/ test/ app2/ app3/ library/ settings.gradle build.gradle src/ com/ test/ external/ volley/ picasso/
Pero no estoy seguro de lo que mi archivo build.gradle para app1 se vería como dependencias de proyecto (biblioteca) parece que tiene que estar dentro de la carpeta app1.
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5+' } } apply plugin: 'android' dependencies { compile files('libs/android-support-v4.jar') compile project(':library') } android { buildToolsVersion "17.0" compileSdkVersion 18 sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aild.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } instrumentTest.setRoot('tests') } }
¿Cuál sería la mejor forma de estructurar mis proyectos para usar gradle?
- Proyecto Android a Cordova plugin - R.java no encontrado / creado
- Varios archivos dex definen Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat con Gradle
- Gradle imprime la advertencia aunque se selecciona SuppressWarnings
- ¿Cuál es la diferencia entre compilar, testCompile y proporcionada en dependencia de gradle
- Junit testing con gradle para un proyecto android
- Gradle falla con problemas de lectura de datos de error de almacén binario
- Dependencias de Gradle con Travis CI en proyecto Android
- Error de proyecto de Android Studio Library
Usted podría utilizar esta estructura:
app1/ build.gradle app2/ app3/ library/ src/ main libs build.gradle settings.gradle
En settings.gradle
include ':library' ,':app1' , ':app2', ':app3'
En app1 / build.gradle
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 14 targetSdkVersion 19 } } dependencies { //Library compile project(':library') // Support Libraries compile 'com.android.support:support-v4:19.0.0' //OkHttp compile 'com.squareup.okhttp:okhttp:1.2.1' //Picasso compile 'com.squareup.picasso:picasso:2.1.1' }
En biblioteca / build.gradle
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.+' } } apply plugin: 'android-library' repositories { mavenCentral() } android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 14 targetSdkVersion 19 } } dependencies { compile fileTree(dir: 'libs', include: '*.jar') }
Con aar de maven (como picasso), Gradle detectará múltiples instancias de la misma dependencia, y administrará las cosas para usted. Con jar (como Volley) tienes que prestar atención. No se puede agregar dos veces. Si su proyecto de biblioteca tiene una dependencia en un tarro, entonces el proyecto APK heredará esta dependencia.
Estás confundido acerca de settings.gradle. Debe estar en la raíz de la estructura de carpetas de varios módulos.
Así que usted tiene dos opciones:
-
Cree una sola configuración multi-módulo donde tiene 4 módulos (biblioteca, app1, app2, app3). En este caso, siempre abrirás los 4 proyectos en el estudio, podrás construir todos para las aplicaciones al mismo tiempo, y todos utilizarán la misma versión de la biblioteca. Esto probablemente significa que usted necesita tener cada aplicación desarrollada al mismo tiempo, y tal vez liberar al mismo tiempo (dependiendo del ciclo de desarrollo del proyecto de la biblioteca)
-
Crear 4 proyectos independientes. En este caso, usted está desarrollando la biblioteca por separado y publicándola en un repositorio (interno) usando cualquier versión que desee. Entonces, cada aplicación puede depender de una versión diferente de la biblioteca.
- FragmentPagerAdapter actualización de título dinámicamente
- Eclipse tiene varias copias del mismo dispositivo Android