Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓Maven插件apklib Mojo不';t在生成的apklib中包括编译的R_Android_Maven_Apk - Fatal编程技术网

Android 安卓Maven插件apklib Mojo不';t在生成的apklib中包括编译的R

Android 安卓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

我正试图将Android
/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>