我正在尝试将Android /res文件夹解压缩到一个单独的项目中,该项目作为apklib依赖项包含在我的主项目中.问题是虽然/res结果中包含了内容.apklib,但编译后的内容R.class却没有.更令人困惑的是,该mvn clean install命令生成.apklib以及.jar文件,并且jar文件具有R.class,但没有/res文件夹的内容.如何生成包含所有资源以及编译类的单个包(.jar或.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>
Run Code Online (Sandbox Code Playgroud)
这会产生以下结果
.罐
./morseflash-resources.jar
com/.../R.class
Run Code Online (Sandbox Code Playgroud)
.apklib
./morseflash-resorces.apklib
META-INF
AndroidManifest.xml
res/
layout/
values/
Run Code Online (Sandbox Code Playgroud)
我想把所有这些内容放在一个文件中,我希望能够将它列为我主要Android项目中的依赖项.这是可能的,如果是的话,我怎么能实现它?
yor*_*rkw 10
这就是android-maven-plugin应该如何工作,将库项目添加为主项目的依赖项,将以下依赖项添加到主项目的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>
Run Code Online (Sandbox Code Playgroud)
请注意,这是从普通的JAR依赖性不同,该apklib简直就是所有的ZIP src和res文件夹有一个Android/Eclipse的库项目(标准目录结构布局src/com/...来代替src/main/java/com/...).这样做的原因是支持在其他非mavenlized项目中使用apklib(有关详细信息,请查看ApkLib文档).您不是将库添加为已编译的jar依赖项,而是将库依赖项添加为源代码和资源,只需从zip文件中添加即可.
在做的时候mvn clean install,在android-maven-plugin:3.0.0:generate-sources目标中,android-maven-plugin将解压缩你的apklib依赖,并在编译你的项目之前将源代码和资源合并到你的主项目中; 这就是Android库项目的工作方式.图书馆计划不只是简单地编译所有内容.为了节省内存和磁盘空间,只复制使用过的部分并将其编译到最终的apk中.您可以在主项目中轻松覆盖资源,因为它们只是在最终编译之前在合并步骤中替换库内容.
这很难看,但目前的情况还是如此,Android开发团队目前正在研究这个问题,并且将来会支持jar依赖,可能是在r17(我想也需要android-maven-plugin更改/升级),更多详情请参阅官方博客文章" Android SDK工具中的图书馆项目变更,r14 ".
| 归档时间: |
|
| 查看次数: |
3578 次 |
| 最近记录: |