biblioteca con dependencias de paquetes (fat aar)

Construimos una biblioteca que distribuimos a nuestros clientes. Distribuimos los archivos aar sin procesar para que los usen. También utilizamos la API de acceso sin procesar de GitHub para proporcionar un repositorio Maven.

Ahora para mantener las cosas ordenadas, dividimos la biblioteca en varios módulos:

include ':library'
include ':geohash'
include ':networkstate'
include ':okvolley'
include ':volley'

library es una biblioteca de Android, también lo sonvolley yokvolley ynetworkstate.

Ahora cuando publicolibrary, el árbol de dependencia se ve así:

\--- com.sensorberg.sdk:sensorberg-sdk:0.10.0-SNAPSHOT
 +--- com.squareup.okhttp:okhttp-urlconnection:2.2.0
 |    \--- com.squareup.okhttp:okhttp:2.2.0
 |         \--- com.squareup.okio:okio:1.2.0
 +--- com.google.code.gson:gson:2.3.1 
 +--- android-sdk:okvolley:unspecified
 |    +--- com.squareup.okhttp:okhttp-urlconnection:2.2.0 (*)
 |    +--- com.google.code.gson:gson:2.3.1
 |    +--- android-near-gradle:volley:unspecified
 |    \--- com.squareup.okhttp:okhttp:2.2.0 (*)
 +--- android-sdk:networkstate:unspecified
 +--- com.squareup.okhttp:okhttp:2.2.0 (*)
 +--- android-sdk:volley:unspecified
 \--- com.loopj.android:android-async-http:1.4.5

Como puedes verandroid-sdk:networkstate:unspecified yandroid-sdk:okvolley:unspecified aparecer en la lista de dependencias externas.

Me gustaría crear milibrary aar con los módulos locales incluidos. Debería hacer una fusión de manifiesto local y un jar lejano ... y fusionar las dependencias de todos los módulos. Solo deben mostrarse los módulos externos.

Intenté hacer referencia al archivo aar local delbuild/output/aar carpeta de los respectivos módulos, pero eso también parece no funcionar. Todavía parece hacer referencia a los módulos locales por sus nombres y no fusionar los manifiestos del frasco ...

¿Alguien ha hecho algo como esto? Fuera de Android, esto se llamaría fatjar y hay complementos comomusketyr / gradle-fatjar-plugin que producen un fatjar con Gradle.

Probé esto en mis módulos locales

if (project.ext.libraryBuild == true) {
    def moduleName = getName()
    File artifactFile = file("/build/outputs/aar/${moduleName}-release.aar")
    if (!artifactFile.exists()) {
        throw new GradleException("Dependency ${moduleName} is not build")
    }
    configurations.create("default")
    artifacts.add("default", artifactFile)
    return;
}


apply plugin: 'com.android.library'

android {
    compileSdkVersion 19
    buildToolsVersion = '21.1.2'
}

para hacer referencia al aar directamente ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta