android - studio - Las dependencias de biblioteca transitiva no se encuentran en la aplicación
visual studio installer (1)
El archivo aar no contiene las dependencias anidadas (o transitivas ) y no tiene un archivo pom que describe las dependencias usadas por la biblioteca.
Significa que, si está importando un archivo aar utilizando un repositorio flatDir
, debe especificar las dependencias también en su proyecto .
No tiene sentido:
compile (name:''library-name'', ext:''aar''){
transitive=true
}
porque el aar no tiene un archivo pom que describa las dependencias, entonces gradle no puede agregar ninguna dependencia porque no puede conocerlas.
Supongamos que tengo un módulo de biblioteca que contiene algunas bibliotecas de terceros como OkHttp. Cuando incluí esta biblioteca en mi aplicación, no pude usar estas bibliotecas de terceros. Leí los siguientes artículos Artículo 1 , Artículo 2 y probé
1. compile project('':library-name'')
{después de importar el archivo .aar (de la biblioteca) como un módulo en myproject}
2. Incluí el archivo .aar en la carpeta libs y agregué las siguientes dependencias
build.gradle (nivel de proyecto)
allprojects {
repositories {
flatDir {
dirs ''libs''
}
}
}
build.gradle (nivel de aplicación)
compile fileTree(dir: ''libs'', include: [''*.jar''])
compile (''com.myapp.package:library-name:1.0.0@aar''){
transitive=true
}
3. similar a la 2ª pero en
build.gradle (nivel de aplicación)
compile fileTree(dir: ''libs'', include: [''*.jar''])
compile (name:''library-name'', ext:''aar''){
transitive=true
}
Pero, aun así, no pude usar las bibliotecas transitorias que están presentes en mi biblioteca. Estoy siguiendo la excepción.
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/okhttp/MediaType;
Alguien puede ayudar
EDITAR:
Lo siguiente es build.gradle de mi biblioteca
compile fileTree(dir: ''libs'', include: [''*.jar''])
testCompile ''junit:junit:4.12''
compile ''com.android.support:appcompat-v7:23.1.1''
compile ''org.apache.httpcomponents:httpcore:4.4.4''
compile ''org.apache.httpcomponents:httpclient:4.5.1''
compile ''com.squareup.okhttp:okhttp:2.6.0''
compile ''petrov.kristiyan.colorpicker:colorpicker-library:1.0.3''
testCompile ''junit:junit:4.12''
testCompile ''org.mockito:mockito-core:1.10.19''
testCompile ''org.hamcrest:hamcrest-library:1.1''
compile files(''notificationlog-0.1.0.jar'')
Pude usar el okhttp
notificationlog
en mi aplicación que era una dependencia en mi biblioteca, pero no okhttp
usar okhttp
y colorpicker