2014-09-06 219 views
45

所以,現在我有一個圖書館項目,說項目Foo,取決於像OkHttp圖書館。現在AAR可以包含傳遞依賴嗎?

,該Foo具有生成的AAR,並將其推到一個公共場所行家buildstep。

所以現在可以說我有項目B,我們把它叫做Bar。 Bar是Android應用程序,Bar取決於Foo

嗯,我有。然而,當我做從Bar調用OkHttpFoo一個public static函數的調用,我得到這個消息:

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

那麼,這樣的事情可能嗎?或者Bar需要手動依賴OkHttp以及其他任何依賴關係Foo有?

回答

40

所以,它花了一段時間,但我發現我在找什麼。這恰好是我用我的方式進行搜索的方式。

這見過較小的回答正是我一直在尋找的是:從本質上講

Transitive dependencies not resolved for aar library using gradle

,我需要一個

transitive = true 

添加到酒吧

的的build.gradle

ex:

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

這樣它包括我所有的傳遞庫。

但是請注意,這可能實際上會導致依賴(尤其是本地的),可以使用「排除」標籤來解決之間的衝突。

+2

我遵循這種方法沒有太大的成功。因此先前解釋的方法,我的設置應該如下: '編譯(「com.my:library:[email protected]」){ 傳遞=真 }'但是當我導入最終庫我的項目中,傳遞庫缺失。我不知道如何繼續,有什麼想法? – 2016-11-16 08:49:20

+13

@MichaelKnight如果使用flatDir將aar包含爲本地文件,則表示aar不包含傳遞依賴關係,您應該手動包含它們。但是,如果你從maven repo獲取aar,那麼庫描述了它正在使用的依賴關係(在pom文件中),並且gradle可以爲你自動獲取它們。 – NazarK 2016-11-23 12:36:52

+0

@MichaelKnight不適合我 – 2017-09-07 14:12:03