2013-10-21 13 views
5

Ich versuche, ein MAVEN-Projekt mit Android-Anwendung einzurichten. Ich habe diese pom-DateiMaven Kompilierungsfehler für Android-Projekt "Fehler: Paket R existiert nicht"

<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> 

und während MAVEN kompiliert ich diesen Fehler (etwa 100-mal, also so oft wie es in meinem Verfahren verwendet wird)

[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 

Jede Idee zu diesem Fehler ? Im Web finde ich entweder unbeantwortete Fragen zur ähnlichen Fehlerausgabe. Ich habe keine Erfahrung mit MAVEN, also glaube ich, dass ich etwas vermisse.

Antwort

3

R-Klasse wird von Ihrer IDE während der Kompilierung erstellt. MAVEN kann die R-Klasse nicht finden, da die Klasse standardmäßig im Build-Ordner zu finden ist. Sie müssen so etwas wie dieses

<sourceDirectory>build</sourceDirectory> 
<outputDirectory>target</outputDirectory> 

sagen MAVEN hinzufügen, die Sie einige Ressourcendateien unter Build-Ordner haben und Sie wollen sie sie unter dem Zielordner zu kompilieren zur Verfügung zu stellen, um hinzuzufügen, die unter Ihrem Projekt sein wird.

so jetzt habe ich

build 
    |----res 
    |----src 
src 
    |----main 
     |----java 
     |----res 
target 
0

Nach einem kurzen Blick, glaube ich, dass Sie das Element build fehlen. Maven baut das Projekt mit aktuellen Quellen, R und anderen gen Klassen wurden noch nicht generiert. Wenigstens müssen Sie so etwas wie (nach dependencies Tag):

<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> 

Auch muss die Verpackung apk sein:

<packaging>apk</packaging> 

Ich würde stark die Android Maven documentation Lesen zusammen mit samples zu beginnen empfehlen.

+0

, wenn ich das Paket ändern ich den Fehler an apk Unbekannt Verpackung: apklib @ Zeile 6, Spalte 14 – geoak

+0

das ', weil Sie dieses jayway Plugin installiert haben müssen. Werfen Sie einen Blick auf die Links, die ich zur Verfügung gestellt habe, um dieses Android Maven Plugin zu installieren – gunar

+0

Ist dieses jayway Plugin nur für Eclipse verfügbar? Ich benutze Android Studio und ich finde keine Möglichkeit, dieses Plugin für AS zu installieren. Danke nochmal! – geoak

0

Dieser Fehler passieren könnte, wenn Sie die Paketnamen ändern mußten, die von Urbild erzeugen: erzeugen, für mich, ich benutze android-quickstart die Modulstruktur zu erzeugen:

mvn archetype:generate \ 
    -DarchetypeArtifactId=android-quickstart \ 
    -DarchetypeGroupId=de.akquinet.android.archetypes \ 
    -DarchetypeVersion=1.0.11 \ 
    -DgroupId=com.yy.android.gameLibs \ 
    -DartifactId=sample 

akquient empfehle mir, "com.yy.android.gameLibs" als Paketname zu verwenden und ich akzeptierte, ich kompiliere dieses Modul erfolgreich und arbeitete. Danach ändere ich den Paketnamen als "com.yy.android.sample" ändere auch das Androidmenifest.xml-Paketattribut, daher meldet das Modul diesen Fehler, ich folge dem generate-Befehl und dem Wahlpaketnamen selbst, um das zu lösen.

0

Ändern Verpackung apklib, wie folgt aus:

<packaging>apklib</packaging> 

Und build Ziel am Ende der pom.xml wie folgt hinzu:

<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> 
Verwandte Themen