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.
- Maven para los proyectos de Android?
- Maven: Uso de bibliotecas Java 8 en aplicaciones instrumentadas con retrolambda-maven-plugin y DEX-ed con android-maven-plugin
- El edificio con maven falla
- ¿Cómo publicar Android Library en Android Arsenal?
- ¿Hay alguna forma de desactivar javadoc se bloquea en Android Studio con Maven plugin?
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') }
- ¿Por qué gradle android plugin no genera dependencias para intellij idea módulo
- Robolectric 2.x + Maven en Jenkins falló con las dependencias APKLIB
- Gradle no incluye dependencias en pom.xml publicado
- Mvn android: deploy no funciona (a pesar de la confirmación del éxito)
- Gradle: sólo resolver las dependencias para la variante deseada
- Dependencia de Maven para libGoogleAnalyticsV2.jar en Android
- Android estudio maven apoyo eliminado?
- Invoque "Maven Project Builder" en Eclipse en Ejecutar como -> Aplicación de Android (o manualmente)
- La pantalla de bienvenida de Cordova no muestra
- Java.lang.NoClassDefFoundError: Resolución fallida de: Lcom / google / android / gms / common / GooglePlayServicesUtil