[英]Maven compilation error for android Project “error: package R does not exist ”
我正在嘗試使用Android應用程序設置MAVEN項目。 我有這個pom文件
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myproject</groupId>
<artifactId>userprofile</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>userprofile</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.1.1.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
在MAVEN編譯期間,我收到此錯誤(大約100次,即我的方法中使用的次數)
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
src\main\java\com\myproject\userprofile\BaseActivity.java:[52,43] error: package R does not exist
Process finished with exit code 1
有關此錯誤的任何想法? 在網絡上,我要么找到關於類似錯誤輸出的未解答的問題。 我沒有MAVEN的經驗,所以我相信我在這里遺漏了一些東西。
R類在編譯期間由IDE構建。 MAVEN找不到R類,因為默認情況下可以在build文件夾下找到該類。 你需要添加這樣的東西
<sourceDirectory>build</sourceDirectory>
<outputDirectory>target</outputDirectory>
告訴MAVEN您在構建文件夾下有一些資源文件,並且您希望使它們可用於編譯,因此將它們添加到將在您的項目下的目標文件夾下。
所以現在我有
build
|----res
|----src
src
|----main
|----java
|----res
target
快速瀏覽后,我相信你錯過了build
元素。 Maven正在使用當前來源構建項目, R
和其他gen
類尚未生成。 至少你需要類似的東西(在dependencies
標簽之后):
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.7.0</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<!-- platform or api level (api level 16 = platform 4.1)-->
<platform>16</platform>
</sdk>
</configuration>
</plugin>
</plugins>
</build>
包裝必須是apk
:
<packaging>apk</packaging>
我強烈建議您開始閱讀Android Maven文檔以及示例 。
如果您修改了由archetype生成的包名稱,則可能會發生此錯誤:對於我,我使用android-quickstart生成模塊結構:
mvn archetype:generate \
-DarchetypeArtifactId=android-quickstart \
-DarchetypeGroupId=de.akquinet.android.archetypes \
-DarchetypeVersion=1.0.11 \
-DgroupId=com.yy.android.gameLibs \
-DartifactId=sample
akquient建議我使用“com.yy.android.gameLibs”作為包名,我接受了,我編譯這個模塊成功並且工作了。 之后,我將包名更改為“com.yy.android.sample”也更改了Androidmenifest.xml包屬性,因此模塊報告該錯誤,我自己跟回生成命令和選擇包名來解決此問題。
將包裝修改為apklib,如下所示:
<packaging>apklib</packaging>
並在pom.xml的末尾添加構建目標,如下所示:
<dependencies>
<!--Android deps -->
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.0.1.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<sdk>
<platform>17</platform>
</sdk>
</configuration>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.