2012-01-11 27 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

相关问题