Kan een AAR transitieve afhankelijkheden bevatten?

Op dit moment heb ik een bibliotheekproject, bijvoorbeeld project Foo, dat afhankelijk is van een bibliotheek als OkHttp.

Foo heeft nu een Maven-buildstep die een AAR genereert en deze naar een openbare plaats pusht.

Laten we zeggen dat ik project B heb, we zullen het Bar noemen. Bar is een Android-applicatie en Bar is afhankelijk van Foo.

Nou, dat heb ik. Wanneer ik echter een public static-functie in Foo vanuit Bar aanroep die OkHttp aanroept, krijg ik dit bericht:

java.lang.NoClassDefFoundError: com.squareup.okhttp.OkUrlFactory
            at com.foo.sdk.utils.OkHttpStack.<init>(OkHttpStack.java:15)

Is zoiets mogelijk? Of moet Bar handmatig afhankelijk zijn van OkHttp en andere afhankelijkheden die Foo heeft?


Antwoord 1, autoriteit 100%

Het heeft even geduurd, maar ik heb gevonden wat ik zocht. Het was toevallig de manier waarop ik mijn zoekopdrachten formuleerde.

Dit minder geziene antwoord was precies wat ik zocht:

Transitieve afhankelijkheden niet opgelost voor aar bibliotheek met gradle

Houd er rekening mee dat afhankelijkheden alleen worden geassocieerd met aar-bibliotheken als ze worden gehost in een maven-repository, in de eerste plaats, omdat het pom-bestand niet is opgenomen in de aar.

In wezen moest ik een

. toevoegen

transitive = true

…naar de build.gradlevan Bar

Voorbeeld:

compile ('com.foo:FOO:1.0.0@aar'){
       transitive=true
}

Op deze manier bevat het al mijn transitieve bibliotheken.

Houd er echter rekening mee dat dit conflicten kan veroorzaken tussen afhankelijkheden (vooral lokale) die kunnen worden opgelost met een exclude-tag.

Other episodes