我有一个依赖于 apklib 项目的 Android 项目。在 apklib 项目中,将生成一个 R.java 文件并将其打包到结果 apklib 文件中。Android项目通过android插件解压并重建所有代码。因此,存在重复的 R 文件编译错误,导致插件尝试在 Android 项目中重建 apklib 项目资源的 R 文件。
问题是什么?这是我从 pom 文件中摘录的片段:
<?xml version="1.0"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
...<packaging>apk</packaging><build>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.8.0</version>
<extensions>true</extensions>
<configuration>
<androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
<assetsDirectory>${project.basedir}/assets</assetsDirectory>
<resourceDirectory>${project.basedir}/res</resourceDirectory>
<genDirectory>${project.basedir}/gen</genDirectory>
<sdk>
<platform>15</platform>
<path>${android.sdk.path}</path>
</sdk>
<undeployBeforeDeploy>false</undeployBeforeDeploy>
<emulator>MyAndroid</emulator>
<device>usb</device>
<dexOptimize>true</dexOptimize>
<mergeManifests>true</mergeManifests>
</configuration>
</plugin>
...
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.0.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android-test</artifactId>
<version>4.0.1.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r12</version>
</dependency>
...
<dependency>
<groupId>my.group.id</groupId>
<artifactId>artifact</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>apklib</type>
</dependency>
</dependencies>
<?xml version="1.0"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><packaging>apklib</packaging>
<build>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.8.0</version>
<extensions>true</extensions>
<configuration>
<androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
<assetsDirectory>${project.basedir}/assets</assetsDirectory>
<resourceDirectory>${project.basedir}/res</resourceDirectory>
<genDirectory>${project.basedir}/gen</genDirectory>
<sdk>
<platform>15</platform>
<path>${android.sdk.path}</path>
</sdk>
</configuration>
</plugin>
...
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.0.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android-test</artifactId>
<version>4.0.1.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r12</version>
</dependency>
...
</dependencies>
问题是apklib中生成的R.java文件被aapt工具(V.19)复制到了Android项目的gen文件夹中。我在两个项目上都使用 Windows 平台、maven 3.1.1 和 android maven 插件 3.8.0。