2012-01-11 71 views
5

我試圖將Android /res文件夾解壓到一個單獨的項目中,該項目作爲apklib依賴項包含在我的主項目中。問題是/res的內容包含在結果.apklib中,而編譯後的R.class則不包含在內。更令人困惑的是,mvn clean install命令生成.apklib以及.jar文件,並且該jar文件具有R.class,但沒有任何/res文件夾的內容。如何生成包含我所有資源以及編譯類的單個包(.jar或.apklib)?Android Maven插件apklib Mojo不包含編譯的R在生成的apklib中

的pom.xml

<packaging>apklib</packaging> 
... 
<plugin> 
    <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
    <artifactId>android-maven-plugin</artifactId> 
    <configuration> 
    <attachSources>true</attachSources> 
    <sdk> 
     <platform>12</platform> 
    </sdk> 
    </configuration> 
<plugin> 

產生以下

的.jar

./morseflash-resources.jar 
    com/.../R.class  

.apklib

./morseflash-resorces.apklib 
    META-INF 
    AndroidManifest.xml 
    res/ 
     layout/ 
     values/ 

我想將所有這些內容都放在一個文件中,我希望能夠將其列爲我的主Android項目中的依賴項。這是可能的,如果是這樣,我怎麼能做到這一點?

回答

10

這是Android的Maven的插件是如何工作的,到庫項目添加爲您的主項目的依賴,添加以下的依賴到你的主項目的pom.xml:

<dependencies> 
    <dependency> 
    <groupId>com.company.common.lib</groupId> 
    <artifactId>common-lib</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <type>apklib</type> 
    </dependency> 
</dependencies> 

注這與普通的jar依賴關係不同,apklib只是你的所有srcres文件夾的一個zip文件夾,它具有Android/Eclipse庫項目的標準目錄結構佈局(src/com/...而不是src/main/java/com/...)。原因是支持在其他非mavenlized項目中使用apklib(詳情請查看ApkLib documentation)。您不是將庫作爲編譯的jar依賴項添加,而是僅僅從zip文件中添加庫依賴項作爲源代碼和資源。

mvn clean installandroid-maven-plugin:3.0.0:generate-sources目標中,android-maven-plugin將解壓縮apklib依賴項,並在編譯項目之前將源代碼和資源合併到主項目中;這是Android圖書館項目應該如何工作的。圖書館計劃不只是簡單地編譯所有內容。爲了節省內存和磁盤空間,只有使用過的部分被複制並編譯到最終的apk中。您可以輕鬆地在主項目中覆蓋資源,因爲它們只是在最終編譯之前在合併步驟中替換庫中的資源。

這很醜陋,但目前情況如何,Android開發團隊目前正在研究此問題,並將在未來支持jar依賴項,可能在r17中(這也需要android-maven-plugin更改/升級I假設),在他們的官方博客文章「Changes to Library Projects in Android SDK Tools, r14」中有更多細節。

+2

謝謝。這比我在android-maven-plugin文檔或Android任務的Sonatype文檔中找到的任何東西都更有幫助。 – Fil 2012-01-18 16:54:08

+0

「**棄用**。您應該使用Android歸檔資源(AAR)。apklib是作爲一種停止差距措施引入的,它允許有限的捆綁和共享Android庫資源的能力。現在Android團隊已經發布了包含編譯代碼的AAR格式,您應該使用它。 「 – 2015-02-02 23:54:09

+0

現在apkLib鏈接已損壞。 – 2015-04-15 02:33:28

相關問題