2014-09-06 56 views
45

Yani, şu anda bir Kütüphane projem var, projenin OkHttp gibi bir kütüphaneye bağlı olduğu Foo.Bir AAR geçiş bağımlılıkları içerebilir mi?

Şimdi, Foo, bir AAR oluşturan ve bunu herkese açık bir yere iten bir maven buildstep'e sahiptir.

Şimdi, B projem olduğunu söyleyelim, ona Bar diyoruz. Bar bir Android uygulamasıdır ve Bar, Foo'a bağlıdır.

Eh, bende var.

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

Yani, böyle bir şey mümkündür: Ben OkHttp çağırır Bar dan Foo bir public static işlevine bir çağrı yapmak Ancak, bu mesaj çıktı? Veya BarOkHttp ve diğer bağımlılıkların yanı sıra Foo sahip olduğu diğer bağımlılıklara manuel olarak bağlı mı?

cevap

40

Biraz zaman aldı ama aradığım şeyi buldum. Sadece aramalarımı anlattığım gibi oldu.

Bu daha az görüldüğü cevap aradığım tam olarak ne:

Transitive dependencies not resolved for aar library using gradle

Esasen, ben

Bar build.gradle bir

transitive = true 

eklemek için gerekli

örn .:

compile ('com.foo:FOO:[email protected]'){ 
     transitive=true 
} 

Bu şekilde tüm geçiş kitaplıklarımı içerir. Bununla birlikte, bunun aslında bir 'exclude' etiketi kullanılarak çözülebilen bağımlılıklar (özellikle yerel olanlar) arasında çakışmalara neden olabileceğini unutmayın.

+2

Bu yaklaşımı çok başarılı bir şekilde takip ediyorum. Buna göre, daha önce açıklanan yönteme göre ayarlarım aşağıdaki gibi olmalıdır: 'derleme ('com.my:library:[email protected]') { transitive = true } Ancak son kütüphaneyi projem, geçişli lib eksik. Nasıl devam edeceğime dair bir fikrim yok, herhangi bir fikrin var mı? –

+13

@MichaelKnight aar'ı flatDir kullanarak yerel dosya olarak eklerseniz, aar'ın geçiş bağımlılıkları içermediği anlamına gelir, bunları manuel olarak eklemelisiniz. Ancak, örneğin, maven repo dan aar getiriyorsanız, kütüphane hangi portların kullandığını açıklar (pom dosyasında) ve gradle bunları sizin için otomatik olarak alabilir. – NazarK

+0

@MichaelKnight benim için çalışmıyor –

İlgili konular