Android 安卓Maven插件apklib Mojo不';t在生成的apklib中包括编译的R
我正试图将AndroidAndroid 安卓Maven插件apklib Mojo不';t在生成的apklib中包括编译的R,android,maven,apk,Android,Maven,Apk,我正试图将Android/res文件夹提取到一个单独的项目中,该项目作为apklib依赖项包含在我的主项目中。问题在于,虽然生成的.apklib中包含了/res的内容,但编译的R.class却没有。更令人困惑的是,mvn clean install命令生成.apklib以及.jar文件,jar文件具有R.class,但没有/res文件夹的任何内容。如何生成一个包含所有资源和编译类的包(无论是.jar还是.apklib) pom.xml <packaging>apklib</pa
/res
文件夹提取到一个单独的项目中,该项目作为apklib依赖项包含在我的主项目中。问题在于,虽然生成的.apklib
中包含了/res
的内容,但编译的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>
.apklib
./morseflash-resorces.apklib
META-INF
AndroidManifest.xml
res/
layout/
values/
我希望所有这些内容都在一个文件中,并且我希望能够在我的主Android项目中将其作为依赖项列出。这可能吗?如果可能,我如何实现它?这就是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>
com.company.common.lib
详细信息)。您并没有将库添加为已编译的jar依赖项,而是将库依赖项添加为源代码和资源,只需从zip文件中添加即可
在执行mvn clean install
时,在android-maven-plugin:3.0.0:generate sources
目标中,android-maven-plugin将解压缩您的apklib依赖项,并在编译项目之前将源代码和资源合并到您的主项目中;这就是Android库项目的工作原理。图书馆项目不仅仅是简单地编译所有内容。为了节省内存和磁盘空间,仅将使用过的部分复制并编译到最终apk中。您可以在主项目中轻松重写资源,因为它们只是在最终编译之前的合并步骤中替换库中的内容
这很难看,但这是目前的工作方式,Android开发团队目前正在进行这方面的工作,并将在未来支持jar依赖性,可能在r17中(我想这也需要Android maven插件的更改/升级),更多详细信息将在他们的官方博客文章中发布。“谢谢。这比我在android maven插件文档或关于android任务的Sonatype文档中找到的任何东西都要有用得多。从链接文档中可以看到:“Deprecation.你应该使用android存档资源(AAR)相反,apklib是作为权宜之计引入的,以允许有限的捆绑和共享Android库资源的能力。现在Android团队已经发布了包含编译代码的AAR格式,您应该改用它。”
<dependencies>
<dependency>
<groupId>com.company.common.lib</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>apklib</type>
</dependency>
</dependencies>