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"?

¿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'))

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 .

  • En Android Studio 2.0, no se puede encontrar la variable local del método en el modo de depuración
  • Cómo configurar gradle y android studio para hacer la compilación de liberación?
  • ¿Cómo puedo eliminar los recursos no utilizados de las bibliotecas de terceros que he incluido en Android?
  • Error: Error de ejecución para la tarea ': app: validateExternalOverrideSigning'
  • ¿Cómo establezco el nivel de api mínimo para los proyectos en Android Studio?
  • ¿Es seguro eliminar la carpeta .gradle en Android Studio?
  • Android studio no descargar fuentes y javadoc
  • Actualización de Gradle a Android Studio 3.0 Beta 1
  • Obtenga el tipo de generación gradle en el sabor del producto
  • Android Studio: falló el proyecto de sincronización de Gradle
  • El complemento es demasiado antiguo, actualice a una versión más reciente o establezca la variable de entorno ANDROID_DAILY_OVERRIDE en
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.