Explicar la estrategia de dependencias transitivas descrita en la documentación de Android Build System
¿Puede alguien explicar lo que el equipo de herramientas de Android significa en este breve párrafo citado a continuación?
Específicamente: ¿Qué es "somelib.jar"?
- Gradle - Android Studio crea aplicaciones multidex demasiado lentas
- Cómo sincronizar Gradle con Apache Cordova
- Force Gradle para usar HTTP en lugar de HTTPS
- Android Studio + Artifactory
- Android Studio hace que mi módulo de prueba dependa del módulo de aplicación
¿Están sugiriendo que creo un nuevo subproyecto que sólo tiene dependencias, lo llamo "projectA" y luego el proyecto publica "projectA.jar"? (Usando artifacts.add ("default", archivo ('projectA.jar'))
El comportamiento deseado que quiero es publicar "projectA.jar" junto con sus dependencias sin causar ningún "multiple dex files define" errors.
Http://tools.android.com/tech-docs/new-build-system/tips#TOC-Handling-transitive-dependencies-for-local-artifacts-jars-and-aar-
Citar:
Si tiene una biblioteca jar o aar local que desee utilizar en más de un proyecto, no puede hacer referencia a él directamente como dependencia local. Esto se debe a que el plugin de Android se quejará si encuentra el mismo archivo jar dos veces al dexar el proyecto y todas sus dependencias. (Tenga en cuenta que en este momento no puede utilizar un archivo aar local, incluso si sólo lo hace referencia una vez).
Una forma de solucionar esto es desplegar el artefacto en un repositorio. Aunque es posible, puede que no sea conveniente debido a la sobrecarga de administración de dicho repositorio.
Otra opción es crear un nuevo subproyecto de Gradle y hacer que el artefacto publicado de este proyecto sea el archivo jar o aar que desea reutilizar. Entonces usted puede simplemente tener otros subproyectos de Gradle dependen de este nuevo subproyecto.
En este nuevo subproyecto, simplemente cree un build.gradle con lo siguiente:
Configurations.create ("default")
Artifacts.add ("default", archivo ('somelib.jar'))
- No se pudo encontrar la propiedad 'aild' en el conjunto de fuentes principal
- El proyecto gradle de Android se desarrolla muy lentamente
- No se encontró ningún identificador de recurso para el atributo 'layout_behavior' en el paquete
- Telegram API release.keystore ERROR
- Recursos en el sub módulo de hermanos, proyecto Gradle
- Gradle: descargue dependencias, bloquee versiones y actualice dependencias manualmente
- ¿Por qué Gradle sólo incluye clases de mi biblioteca con la dependencia del proyecto
- Gradle obtener tipo de construcción actual
En mi opinión, esto se utiliza principalmente para el módulo de la biblioteca.
Si un módulo de biblioteca depende de somelib.jar
, otro módulo de aplicación que depende del módulo de biblioteca también depende de somelib.jar
, entonces pueden aparecer "errores de definición de archivos múltiples".
Como dicen los "Consejos", el problema puede resolverse mediante la creación de un módulo simple, que no puede publicar *.jar
o *.aar
y sólo se utiliza para ser dependido por otros módulos , con sólo la dependencia *.jar
s. Con esto, la salida *.aar
del módulo de biblioteca no incluirá somelib.jar
.
- Javax.sound.sampled.AudioInputStream para android
- Android Studio agrega relleno al icono ic_launcher.png