2015-06-12 41 views
6

我正在開發一個Android庫。圖書館依賴性很小。我不確定如果開發人員使用我的庫和其他已存在於我的庫中的依賴項會發生什麼情況。我試圖對此進行搜索,但找不到任何東西。Android:如何解決圖書館依賴衝突

例如,我在我的庫中使用版本X的Volley Library,並將其作爲gradle包裝運送。開發人員隨我的庫一起導入Volley版本Y.

什麼應該是在庫(模塊,jar或包)中包含依賴的最佳方式,以最大限度地減少衝突情況。

+0

將是很好,如果有文件,回答了這個問題。事實上,我們留下了SO作爲回答這個問題的最佳途徑。雖然它不是特定的,但它是所有android程序員最終必須處理的東西。 一般的答案會比一千個具體的答案更有幫助。 –

回答

0

您將指定用戶排除其他庫。從我的gradle這個

compile('com.mobprofs:retrofit-simplexmlconverter:1.1') { 
    exclude module: 'stax' 
    exclude module: 'stax-api' 
    exclude module: 'xpp3' 
} 

一般用戶 例子,如果將有衝突,他會知道他會如何工作gradle這個能夠添加eclude庫

+0

這些模塊將從導入的庫中排除?或者用戶項目? –

+0

https://docs.gradle.org/current/userguide/dependency_management.html - >轉到50.4.7。排除傳遞依賴 –

+0

你看看這裏http://stackoverflow.com/questions/16601299/how-to-create-a-library-project-in-android-studio-and-an-application-project-tha和這裏http://stackoverflow.com/questions/16718026/how-to-build-an-android-library-with-android-studio-and-gradle? –

2

兩個選項

  1. 可能的方式在你的依賴關係中加入依賴關係就是創建一個fat/uber/share jar(這裏有Gradle插件)。使用自定義類加載器使用One-Jar加載罐子中的罐子。或者使用Jar Jar Links
  2. 的第二個選項是specificaly exclude transistive dependencies做:

    compile('X') { 
        exclude module: 'Y' 
    }