2014-12-08 53 views
1

我想創建一個名爲MyLib的Android庫。不可能用依賴關係發送.aar嗎?

的庫依賴於其他幾個庫和模塊:A,B和C

看來,創建我的MyLib.aar時A,B和C不包括在內。

當我將MyLib.aar集成到應用程序中時,我必須在應用程序的build.gradle中將A,B和C設置爲依賴關係。但是我已經將它們設置爲MyLib庫項目中的依賴項。

這是正確的行爲嗎?

是否有任何方法將MyLib打包爲A,B和C,以便依賴於MyLib的應用程序不需要顯式聲明A,B和C爲依賴關係?

+0

「當我將MyLib.aar集成到應用程序中時」 - 您是如何做到這一點的?如果您將AAR作爲工件引用,則POM應包含依賴信息,以允許AAR的消費者知道您的庫需要哪些依賴項(和版本)。 – CommonsWare 2014-12-08 01:16:22

+0

@CommonsWare我正在運行'assemble'gradle命令。這會在我的庫的app/build/outputs/aar目錄中生成一個.aar文件。我複製.aar文件並將其粘貼到我的應用程序項目的app/libs目錄中,並將.aar作爲app/build.gradle文件中的依賴項引用。 – neonDion 2014-12-08 01:21:12

+3

我建議您切換到使用Maven樣式的存儲庫(即使它只是'mavenLocal()'),以便您可以使用POM文件來表達您的依賴關係。正如你似乎正在尋找的那樣,工具鏈中沒有合併AAR文件的東西。 – CommonsWare 2014-12-08 01:23:17

回答

1

所以,如果我想將MyLib發給其他開發人員,讓他們能夠解決他們的編譯環境的依賴關係,那麼它聽起來像一個解決辦法是建立一個公共的Maven回購控股MyLib中的依賴關係和那麼使用該庫的開發人員將能夠解決所有依賴關係。我的理解是否正確?

一般來說,是的。

AAR本身及其POM文件將由存儲庫託管,無論開發人員需要何種AAR都可以看到該存儲庫。這可能是一個團隊的內部存儲庫,一直到像Maven Central一樣。然後

的AAR的依賴將下降(希望)分爲兩大陣營:

  1. 那些已經公開可見的依賴關係(例如,從Maven的中央),其中消費者您的AAR/POM的將能夠下拉

  2. 那些是你自己的代碼,然後你會像AAR本身一樣對待,將依賴和它的POM放入回購庫中,以便其他人在消耗主要AAR時可以獲得它來自回購