Error de compilación de Maven para android Proyecto "error: paquete R no existe"
Estoy tratando de configurar un proyecto MAVEN con la aplicación de Android. Tengo este archivo 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>
Y durante la compilación MAVEN consigo este error (cerca de 100 veces, es decir, tantas veces como se utiliza en mis métodos)
- ¿Cómo uso andengine con maven?
- IntelliJ importa proyecto de POM usando la versión incorrecta de JDK
- Error al crear un proyecto de Android con Maven
- No se ha encontrado ningún complemento para el prefijo 'android' en el proyecto actual
- Cómo crear una biblioteca de Android desde el código que tienen gradle dependencia?
[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
¿Alguna idea sobre este error? En la web, o bien encontrar preguntas sin respuesta acerca de la salida de error similar. No tengo experiencia en MAVEN, así que creo que estoy perdiendo algo aquí.
- Android y Maven: Acelerar la compilación e implementación de proyectos
- Android Maven Eclipse todavía no puede importar apklib
- Android maven plugin no obtiene ANDROID_HOME env variable en Eclipse
- Nombre del paquete variable con Maven Android Plugin
- ¿Cómo puedo cambiar mi AndroidManifest como está siendo empaquetado por maven
- Prueba de instrumentación androide: IllegalAccessError
- Cree la Biblioteca de Archivos de Android (AAR) con maven solamente
- Activador de jabón, fallo de compilación de maven
La clase R es construida por su IDE durante la compilación. MAVEN no puede encontrar la clase R porque de forma predeterminada la clase se puede encontrar en la carpeta de compilación. Necesitas agregar algo como esto
<sourceDirectory>build</sourceDirectory> <outputDirectory>target</outputDirectory>
Diciéndole a MAVEN que tiene algunos archivos de recursos en la carpeta de compilación y desea que estén disponibles para compilarlos, así que agréguelos bajo la carpeta de destino que estará bajo su proyecto.
Así que ahora tengo
build |----res |----src src |----main |----java |----res target
Después de un rápido vistazo, creo que le falta el elemento de build
. Maven está construyendo el proyecto con fuentes actuales, R
y otras clases de gen
aún no se han generado. Al menos necesitas algo como (después de dependencies
etiqueta de 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>
También el embalaje debe ser apk
:
<packaging>apk</packaging>
Recomiendo encarecidamente que comience a leer la documentación de Android Maven junto con muestras .
Este error podría ocurrir si tuviera que modificar el nombre del paquete que genera por archétype: generate , para mí, utilizo android-quickstart para generar la estructura del módulo:
mvn archetype:generate \ -DarchetypeArtifactId=android-quickstart \ -DarchetypeGroupId=de.akquinet.android.archetypes \ -DarchetypeVersion=1.0.11 \ -DgroupId=com.yy.android.gameLibs \ -DartifactId=sample
Akquient me recomienda usar "com.yy.android.gameLibs" como nombre del paquete y acepté, compile este módulo con éxito y funcionó. Después de eso, cambio el nombre del paquete como "com.yy.android.sample" también cambia el atributo del paquete Androidmenifest.xml, por lo tanto el informe del módulo que el error, sigo de nuevo el comando generate y el nombre del paquete de elección yo mismo para resolver esto.
Modifique el empaquetado a apklib, como esto:
<packaging>apklib</packaging>
Y agrega meta de construcción al final de pom.xml como esto:
<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>
- MediaPlayer onCompletion no se llama con precisión
- ¿Cómo utilizar WebView para mostrar páginas html en modo lector de libros electrónicos?