android eclipse r.java-file

Desarrollando para Android en Eclipse: R.java no regenera



r.java-file (30)

Descubrí que mi R.java nunca se actualiza, por lo que no contiene información sobre mis nuevos recursos, así que decidí eliminarlo y pensé que Eclipse generaría uno nuevo. Pero eso no sucedió, y no tengo R.java ahora. ¿Cómo puedo regenerar uno?

Estoy usando Windows 7.

De uno de los comentarios: "Hacer Proyecto -> Limpiar es lo que me causó el problema. Limpiar elimina R.java ... y por cualquier motivo, el complemento no está regenerando el archivo".


En Eclipse, simplemente use Proyecto -> limpiar para limpiar el proyecto. El R.java se va a (re) crear automáticamente.

Si por alguna razón eso no funciona: asegúrese de que sus archivos layout.xml no contengan errores. Eclipse parece tener un poco de error: a veces no marca los errores dentro del XML ni el explorador de paquetes. En tal caso: mire la vista "consola" o "problemas" después de usar "limpiar". Todos los errores deben mostrarse allí. Arreglarlos y rehacerlos.

NOTA: ¡NO es necesario corregir los errores que se producen debido a la falta de un archivo R! ¡Solo arregle los archivos XML y otros errores del proyecto y use clean!


Arreglo rapido:

El nombre del paquete en el manifiesto debe ser el mismo que el de la carpeta /src , el paquete de la carpeta /gen se reproducirá automáticamente.

Observación detallada:

Observe el nombre del paquete en la carpeta /gen . En mi caso fue diferente al de la carpeta /src .

El paquete al que se hace referencia en el manifiesto era el de la carpeta /gen .

Intenté agregar un paquete con el nombre de la carpeta /src a la carpeta /gen ver qué sucedió, pero esto no resolvió el problema. Luego procedí a eliminar el nombre del paquete que no era el mismo que el nombre del paquete de la carpeta /src . Este paquete con el nombre que no correspondía a la carpeta /src volvió a crear tan pronto como lo eliminé.

Dado que la referencia del paquete en el manifiesto correspondía a la que se estaba recreando sin sentido y que no se correspondía con el paquete en la carpeta /src , se le package = "oldPackage" que cambiara el nombre de package = "oldPackage" con el package = "srcFolderPackage" .


Android ha agregado en la herramienta de compilación ADK 22 del SDK para el mecanismo de construcción. Solo necesitas hacer los siguientes pasos.

  1. Actualizar la herramienta SDK de Android
  2. Actualizar la herramienta de la plataforma SDK de Android
  3. Actualizar la herramienta de compilación de Android SDK
  4. Agregue la ruta de su herramienta de construcción a la variable de ruta. (ruta hasta ---- TU DIRECTORIO-RUTA / android-sdk / build-tools)

Esto solucionará el problema.


Asegúrese de que no está importando

android.R;


Cambié el nombre de mi archivo de diseño XML y descubrí más tarde que el archivo XML (proveedor de widgets en este caso) aún se refiere al antiguo diseño XML que no existe, y eso evitó la generación / corrección automática de la clase R.


Como una generalización de la respuesta de Glaux, si tiene algún error en el directorio res , es posible que R.java no genere, incluso si limpia y reconstruye. Resuelve esos errores primero.

Como ejemplo: cuando agrega un archivo de imagen de, por ejemplo, "myimage-2.jpg", el sistema lo considerará un error, ya que los nombres de los archivos están limitados a valores alfanuméricos. Realice una actualización en su directorio ''res'' después de agregar cualquier archivo y observe la salida en la ventana de la consola para ver si hay advertencias de nombres de archivos.


De acuerdo, está claro que puede haber muchas causas para este problema. Si está en una máquina Linux de 64 bits y está configurando el ADT por primera vez, puede tener este problema donde R no se genera automáticamente. Compruebe la pestaña de la consola y puede ver un error similar a:

''No such file or directory'' while attempting to get adb version from ''/home/patrick/code/android-sdks/platform-tools/adb''

Si ese es el caso, necesitas instalar ia32-libs, usando algo como:

sudo apt-get install ia32-libs

Vea aquí para más detalles: Android adb no encontrado


Descubrí que cualquier archivo que tenga letras mayúsculas en la carpeta res creará este error. Esto me sucedió con un archivo PNG que agregué y olvidé.


Después de leer muchas publicaciones y videos de YouTube, descubrí que a cada uno de nosotros nos falta R.java por diferentes motivos.

Así es como solucioné esto en Eclipse:

  • Crear R.java en la carpeta gen manualmente y guardar.
  • Después de eso vaya a Proyecto y haga clic en "Limpiar"

Aparecerá el siguiente mensaje y su archivo se reescribirá automáticamente:

R.java fue modificado manualmente! Volviendo a la versión generada!


Encontré que esto me sucedía con un diseño roto y todo explota. Relájese, es como ese viejo error cuando aprendió por primera vez la programación C, donde se olvida un punto y coma y genera cien errores. Muchos entran en pánico, presionan todos los botones, y empeoran las cosas.

Solución

  • Asegúrate de que todo lo que la R. enlaza no esté roto. Corrige todos los errores en tus archivos XML . Si se rompe algo en los ADK, R no se regenerará.
  • Si de alguna manera golpeas algo y import android.R en tu actividad, elimínalo .
  • Ejecutar proyecto -> Limpiar . Esto eliminará y regenerará R y BuildConfig.
  • Asegúrate de que Proyecto -> Construir automáticamente esté marcado. Si no, créelo manualmente a través de Menu -> Project -> Build Project .
  • Espera unos segundos a que desaparezcan los errores.
  • Si no funciona, borre todo lo que está dentro de la carpeta / gen /
  • Si aún no funciona, intente hacer clic con el botón derecho en su proyecto -> Herramientas de Android -> Reparar propiedades del proyecto .
  • Verifique los archivos * .properties (en la carpeta raíz de la carpeta de su aplicación) y asegúrese de que los enlaces no estén rotos.
  • Haga clic derecho en su proyecto> propiedades> Android . Mire las secciones Project Target Target y Library en el lado derecho de la página. Tu objetivo de construcción debe coincidir con el objetivo en tu AndroidManifest.xml. Entonces, si está configurado para apuntar a 17 en AndroidManifest, asegúrese de que el Nombre del objetivo sea Android 4.2. Si su biblioteca tiene una X debajo de la referencia, elimine y vuelva a agregar la biblioteca hasta que aparezca una marca verde. Esto puede suceder si ha movido algunos archivos y carpetas.

Qué hacer si R no se regenera.

Esto suele suceder cuando tienes un archivo XML roto.

  • Compruebe errores dentro de sus archivos XML, principalmente dentro de la carpeta /res/
  • Los lugares comunes son /layout/ y /values/ , especialmente si ha cambiado uno de ellos recientemente
  • Compruebe AndroidManifest.xml . Encuentro que a menudo cambio una cadena y me olvido de cambiar el nombre de la cadena de AndroidManifest.xml .
  • Comprueba que Android SDK Build-tools esté instalado. Ventana -> Administrador del SDK de Android -> Herramientas -> Herramientas de construcción del SDK de Android
  • Asegúrese de que cuando actualice Android SDK Tools , también actualice las Android SDK Platform-tools Android ADK Build-tools y Android ADK Build-tools . La construcción falla silenciosamente si no coinciden.
  • Si no puede encontrar el problema, haga clic con el botón derecho / gen / -> Restaurar desde el historial local ... -> marque R.java -> haga clic en Restaurar . Incluso si no resuelve el problema, eliminará los errores adicionales para hacer que el problema sea más fácil de encontrar.

Encontré una solución por la que Eclipse no fabrica R.class después de hacerlo nuevamente: 2 limpio, compilación, etc.

El problema está aquí en strings.xml:

<string name="hello">Hello World, HelloAutoComplete!</string> <string name="app_name">HelloAutoComplete</string>

Eclipse las crea de forma predeterminada cuando crea proyectos.

Definitivamente estás cambiando las cadenas.xml por tus propios requisitos. A veces borras el string.xmls estas dos líneas de tu código:

Está haciendo un problema en el archivo AndroidManifest.xml:

<application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloAutoComplete" android:label="@string/app_name">

Así que no puede comunicarse con strings.xml.


He encontrado este problema unas cuantas veces. Descubrí que si no importaba el paquete R a través del nombre de mi aplicación, por ejemplo, si mi aplicación tenía el nombre de paquete example.test, descubrí que tenía que importar example.test.R para acceder a cualquiera de los recursos

Si esto no se importó, los recursos que se obtuvieron fueron los recursos predeterminados, sin incluir ninguno de los míos.

Dicho esto, si descubre que solo está obteniendo una lista de recursos predeterminados, simplemente verifique para asegurarse de que está importando application_package_name.R y no android.R.


Limpiar el proyecto, cerrar Eclipse, volver a abrirlo y lanzar mi proyecto finalmente hizo que mi R.java reapareciera ... Espero que ayude


Mi problema era que appcompat no estaba en el mismo directorio que mi proyecto.

Descubrí esto al compilar mi aplicación con Ant .


Mi problema estaba dentro de un archivo de menú. El compilador no parece advertirle si se hace referencia a cadenas que no existen dentro de strings.xml en los archivos de menú. Compruebe si su item s en los archivos XML de su menú hace referencia a cadenas que no existen en su strings.xml . Por lo general en android:title .


Obviamente no hay una respuesta final a esto, pero aquí hay otra que no veo aquí ya:

R.java desaparecer R.java después de (intentar) una Sincronización de equipo, y hubo archivos de resolución de conflictos en el proyecto (es decir, thingy.xml.mine , thingy.xml.r35 , etc.). Eliminándolos / resolviendo los conflictos regenerados R


Para mí, este error se debió cuando intenté duplicar un res/menu existente en lugar de crear uno con el wizard .


Para mí, había enlazado v7 appcompat dos veces. De todos modos, en Eclipse, haga clic con el botón derecho en el nombre del proyecto en Package Explorer o Navigator, vaya a Propiedades, Android y deseleccione cualquier duplicado en la sección Biblioteca. Puede que necesites construir -> Limpiar después.


R.java nunca se generará si hay errores en la carpeta res . Por ejemplo, en la subcarpeta dibujable hay dos archivos que tienen el mismo nombre, uno es icon.png y el otro es icon.html.

Puede ver algún error en la ventana de registro de la consola de Eclipse que dice "El icono de entrada de recursos ya está definido". Después de eliminar icon.html, puede limpiar o simplemente eliminar la carpeta gen . Encontrarás que se crea R.java.


SIEMPRE es útil echar un vistazo a la pestaña Problemas en Eclipse. En mi caso, recibí un mensaje de error " Android no se puede resolver el objetivo ''android-8'' " que evitó que se generara el R.java. Entonces, corregí el objetivo importado al que estaba usando en el archivo default.properties , luego realicé una limpieza a través de Proyectos-> Limpiar y listo! R.java se genera automáticamente! ¡Espero eso ayude!


Si su R.java no se genera, una de las soluciones es eliminar el archivo de diseño llamado "blabla.out.xml".

Después de eliminar este archivo, intente limpiar el proyecto del menú Proyecto -> Limpiar .


Si tu sistema operativo es Ubuntu, puedo darte una sugerencia:

  1. Instalar o actualizar ia32-lib:

    sudo apt-get upgrade ia32-libs

  2. Compruebe si tiene el permiso correcto en la carpeta aapt:

    cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2 chmod 777 aapt

  3. Inicia Eclipse:

    sudo eclipse

  4. Ejecutar proyecto -> Limpiar en Eclipse


También asegúrese de tener la última versión del complemento ADT y abra el administrador de Android SDK para actualizar todas las herramientas de SDK a la última versión. Compruebe si hay actualizaciones en el mismo Eclipse. Versiones no coincidentes causaron el problema para mí.


Todas estas respuestas no podrían funcionar si usas Maven. La solución para mi fue agregar

<genDirectory>${project.basedir}/gen</genDirectory>

a la sección de configuración de android-maven-plugin.


Tuve el mismo problema, y ​​finalmente encontré el problema: en el archivo strings.xml, no mantuve la línea <string name="app_name">program-name</string> que está presente de forma predeterminada al crear un nuevo Android proyecto. Pensé que solo se usaba para el programa HelloWord, que es el programa original.

Sin embargo, el AndroidManifest.xml se refiere a este valor, por lo tanto:

=> Un error de compilación;
=> el R.java no está actualizado;
=> ID no son reconocidos ...


Tuve el mismo problema. Cuando lo comprobé, descubrí que el nombre del recurso XML bajo diseño no tenía la convención de nomenclatura correcta. Tenía algunas letras mayúsculas. Así que le cambié el nombre para hacer que todas las letras fueran minúsculas y la magia funcionara.


Tuve este problema Accidentalmente borré esto

xmlns:tools="http://schemas.android.com/tools"

que comenzó a causar errores de compilación en todo el proyecto en mis archivos XML, así como en mis archivos Java. Tan pronto como volví a escribir lo que borré, funcionó de nuevo :)


Una razón por la que la clase R. puede desaparecer de repente es cuando hay errores en los archivos XML. Por ejemplo, cuando agrega un archivo XML con letras mayúsculas en el nombre como myCoolLayout.xml que no está permitido. O cuando tienes referencias que no apuntan a archivos existentes, etc.


Este sitio sugiere:

si ejecuta una limpieza en el proyecto, debe regenerar todos los archivos Java generados, es decir, R.

...y...

En Eclipse, en el menú Proyecto, se crea una opción automáticamente. Eso te ayudaría a construir el archivo R.java cada vez que se realicen modificaciones. La opción Limpiar ... también está ahí bajo Proyecto.

Este sitio sugiere otra solución.


Usted tiene el 100% de un error en un archivo XML , pero la verificación XML no le muestra el error. ¡Esta es la razón por la que necesitas revisar tus archivos XML primero!