En ce moment, j'ai un projet de bibliothèque, disons le projet Foo qui dépend d'une bibliothèque comme OkHttp.
Maintenant, Foo a un buildstep Maven qui génère un AAR et le pousse vers un lieu public.
Disons maintenant que j'ai le projet B, nous l'appellerons Bar. Bar est une application Android, et Bar dépend de Foo.
Eh bien, j'ai ça. Cependant, lorsque j'appelle un public static
fonction dans Foo de Bar qui appelle OkHttp, je reçois ce message:
Java.lang.NoClassDefFoundError: com.squareup.okhttp.OkUrlFactory
at com.foo.sdk.utils.OkHttpStack.<init>(OkHttpStack.Java:15)
Une telle chose est possible? Ou Bar devra-t-il dépendre manuellement d'OkHttp ainsi que de toutes les autres dépendances de Foo?
Cela a pris un peu de temps mais j'ai trouvé ce que je cherchais. C'était juste la façon dont je formulais mes recherches.
Cette réponse moins connue était exactement ce que je cherchais:
Dépendances transitives non résolues pour la bibliothèque aar utilisant gradle
Essentiellement, je devais ajouter un
transitive = true
...au build.gradle
de Bar
Exemple:
compile ('com.foo:FOO:1.0.0@aar'){
transitive=true
}
De cette façon, il inclut toutes mes bibliothèques transitives.
Notez cependant que cela peut réellement provoquer des conflits entre les dépendances (en particulier locales) qui peuvent être résolus à l'aide d'une balise exclude
.