簡體   English   中英

Android項目的Maven編譯錯誤“錯誤:包R不存在”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM