2014-09-01 26 views
5

有人可以解釋下面引用的這段短文中Android工具團隊的含義嗎?解釋Android構建系統文檔中描述的傳遞依賴策略

具體來說: 什麼是「somelib.jar」?

他們建議,我創建一個只有依賴性的新子項目,稱之爲「projectA」,然後讓項目發佈「projectA.jar」? (使用artifacts.add(「默認」,文件('projectA.jar'))

我想要發佈「projectA.jar」及其依賴項,而不會導致任何「多個dex文件定義」錯誤

http://tools.android.com/tech-docs/new-build-system/tips#TOC-Handling-transitive-dependencies-for-local-artifacts-jars-and-aar-

報價:

如果您有想要更多 不止一個項目中使用當地的罐子或AAR庫,你不能直接引用它作爲一個本地 依賴關係。這是因爲如果在項目及其所有 依賴關係中找到相同的jar文件兩次,則android插件會投訴。 (請注意,即使您僅引用一次,您現在也無法真正使用本地文件)。

解決此問題的一種方法是將工件部署到存儲庫中。雖然 有可能,但由於管理這樣的存儲庫的開銷 可能不方便。

另一種方法是創建一個新的Gradle子項目,並使該012xx項目的已發佈工件成爲您想要 重用的jar或aar文件。然後,您可以簡單地讓其他Gradle子項目依賴 這個新的子項目。

在這個新的子項目,只需創建與 一個的build.gradle如下:

configurations.create( 「默認」)

artifacts.add( 「默認」,文件(「somelib .jar'))

回答

0

在我看來,這主要用於庫模塊。

如果一個庫模塊依賴於somelib.jar,依賴庫模塊的另一個應用程序模塊也依賴於somelib.jar,那麼可能會出現「多個dex文件定義」錯誤。

由於「提示」說,這個問題是可以解決的通過創建一個簡單的模塊,這是無法發佈*.jar*.aar僅用於被其它模塊可以依靠,只有依賴*.jar秒。有了這個,庫模塊的*.aar輸出將不包括somelib.jar