Cómo incluir dependencias de maven remoto en una biblioteca de Android

Tengo un problema muy complejo. Mi empresa desarrolló un SDK y el resultado es un archivo AAR que se ha publicado en un repositorio Maven remoto (al que se puede acceder de forma anónima). Sin embargo, este AAR tiene varias dependencias, por ejemplo:

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile files('libs/BluetoothLeLibrary-0.0.2.jar') compile 'com.google.code.gson:gson:2.3' compile 'com.company.sdk.client:sdk-client-lib:1.2.1.1@jar' compile 'com.company.internal.commons:enums:1.0@jar' compile 'com.google.android.gms:play-services-location:6.5.87' compile 'com.android.support:support-v4:21.0.3' compile 'com.google.guava:guava:18.0' compile 'com.google.api-client:google-api-client-android:1.17.0-rc' compile('com.google.api-client:google-api-client:1.17.0-rc') { exclude(group: 'xpp3', module: 'xpp3') exclude(group: 'org.apache.httpcomponents', module: 'httpclient') exclude(group: 'junit', module: 'junit') exclude(group: 'com.google.android', module: 'android') } compile('com.google.http-client:google-http-client-android:1.17.0-rc') { exclude(group: 'com.google.android', module: 'android') } } 

Los que empiezan con com.company son bibliotecas privadas que nuestra empresa utiliza. Están ubicados en otro repo Maven, que sólo es accesible para los empleados y colaboradores que utilizan un nombre de usuario y una contraseña.

Ahora, este archivo AAR puede ser utilizado por cualquier desarrollador para poder acceder a sus características. Sin embargo, si se agrega la dependencia como se muestra en el Ejemplo de código A, el proceso de generación se rompe, ya que requiere acceso a la variable @ enterger / google_play_services_version del servicio de Google Play utilizada en el manifiesto de Android. Encontré dos soluciones para esto, que se muestran en los ejemplos de código B y C. Sin embargo, utilizando el ejemplo de código B, la aplicación que utiliza el SDK intenta descargar y tener acceso a las bibliotecas privadas de la compañía; pero ya que sólo son accesibles a través de un usuario y contraseña, simplemente no se encuentran por gradle. Por otro lado, el código muestra C deja la aplicación no puede encontrar clases y métodos en esas bibliotecas; curiosamente, el código se compila y se ejecuta, pero la aplicación se bloquea con java.lang.VerifyError y rechaza las clases del SDK.

¿Cómo puedo agregar estas bibliotecas privadas al AAR, para evitar que la aplicación intente descargarlas? ¿O cómo podría resolver este problema?

Código Muestra A:

 compile 'com.company.sdk:library:1.3.0.0@aar' 

Ejemplo de código B:

 compile ('com.company.sdk:library:1.3.0.0@aar'){ transitive=true } 

Código Muestra C:

 compile 'com.google.android.gms:play-services-location:6.5.87' compile ('com.company.cc.sdk:library:1.3.0.2@aar'){ exclude(group: 'com.google.android.gms', module:'play-services-location') } 

  • La tarea "instalar" de plugin de Gradle Maven no funciona con el proyecto de la biblioteca de Android
  • ¿Qué es Maven en Android Studio?
  • ¿Cómo se integra Robolectric, Maven, ActionBarSherlock (y preferiblemente + IntelliJ) en un proyecto de Android?
  • Biblioteca de Android - Publica varias variantes en el repositorio de Maven local usando Gradle
  • Prueba de instrumentación androide: IllegalAccessError
  • Eliminar el sufijo de liberación al publicar una biblioteca de Android
  • Robolectric 2.x + Maven en Jenkins falló con las dependencias APKLIB
  • No obtener fuentes procesadas (generadas) de anotación compiladas en apk, usando maven
  • ¿Cómo instalar manualmente App Engine en Android Studio?
  • Error de compilación de Maven para android Proyecto "error: paquete R no existe"
  • Incluye la dependencia del repositorio local de Maven en Android Studio Gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.