Desarrollando para Android en Eclipse: R.java no regenerando

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. La limpieza elimina a R.java … y por cualquier razón el complemento no está regenerando el archivo”.

Este sitio sugiere:

si ejecuta una limpieza en el proyecto, debería 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á allí en Proyecto.

Este sitio sugiere otra solución.

Descubrí que esto me sucede con un diseño roto y todo explota. Relájate, es como ese viejo error cuando aprendiste C por primera vez, donde olvidas un punto y medio y genera cientos de 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. Repare todos los errores en sus archivos XML . Si algo en los ADK está roto, R no se regenerará.
  • Si de alguna manera tocaste algo y creaste import android.R en tu actividad, quítalo .
  • Ejecutar Proyecto -> Limpiar . Esto eliminará y regenerará R y BuildConfig.
  • Asegúrese de que Proyecto -> Crear automáticamente esté marcado. Si no, comstackrlo manualmente a través de Menu -> Project -> Build Project .
  • Espere unos segundos para que desaparezcan los errores.
  • Si no funciona, elimine todo dentro de la carpeta / gen /
  • Si todavía no funciona, intente hacer clic derecho en su proyecto -> Herramientas de Android -> Reparar las propiedades del proyecto .
  • Verifique sus archivos * .properties (en la carpeta raíz de su carpeta de aplicaciones) y asegúrese de que los enlaces no estén rotos.
  • Haga clic con el botón derecho en su proyecto> propiedades> Android . Mire las secciones Project Build Target y Library en el lado derecho de la página. Su objective de comstackción debe coincidir con el objective en su AndroidManifest.xml. Entonces, si está configurado para apuntar 17 en AndroidManifest, asegúrese de que el Nombre de Destino sea Android 4.2. Si su biblioteca tiene una X debajo de la referencia, elimine y vuelva a agregar la biblioteca hasta que haya una marca verde. Esto podría suceder si movió algunos archivos y carpetas.

Qué hacer si R no se regenera

Esto generalmente sucede cuando tienes un archivo XML roto.

  • Compruebe los 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
  • Comprueba AndroidManifest.xml . Encuentro que a menudo cambio una cadena y me olvido de cambiar el nombre de la cadena de AndroidManifest.xml .
  • Compruebe que esté instalado Android SDK Build-tools . Ventana -> Administrador de Android SDK -> Herramientas -> Android SDK Build-tools
  • Asegúrese de que cuando actualiza Android SDK Tools , también actualiza las Android SDK Platform-tools y Android ADK Build-tools . La comstackción falla silenciosamente si no coinciden.
  • Si no puede encontrar el problema, haga clic con el botón derecho en / gen / -> Restaurar desde la historia local … -> marque R.java -> haga clic en Restaurar . Incluso si no resuelve el problema, eliminará los errores adicionales para que el problema sea más fácil de encontrar.

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

Una razón por la que la clase R. puede perderse repentinamente es cuando hay errores en sus 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 tiene referencias que no apuntan a archivos existentes, etc.

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

Si por algún motivo no funciona, asegúrese de que sus archivos layout.xml no contengan errores. Eclipse parece tener errores aquí: a veces no marca los errores dentro del XML ni del explorador de paquetes. En tal caso: eche un vistazo a la vista de “consola” o “problemas” después de usar “limpiar”. Todos los errores deben mostrarse allí. Arreglarlos y volver a hacer una limpieza.

NOTA: ¡NO es necesario corregir los errores que recibe 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, era diferente de la 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 también ver qué habría pasado, 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é.

Como 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 , esto provocó el cambio de nombre package = "oldPackage" con el package = "srcFolderPackage" .

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

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

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

Android ha agregado en SDK la herramienta de construcción ADT 22 para el mecanismo de construcción. Solo necesita hacer los siguientes pasos.

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

Esto resolverá el problema.

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

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

Como 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 lo limpia y reconstruye. Resuelve esos errores primero.

Como ejemplo: cuando agrega un archivo de imagen de, por ejemplo, “myimage-2.jpg”, el sistema considerará esto como un error, ya que los nombres de archivo están limitados a valores alfanuméricos. Haga una actualización en su directorio ‘res’ después de agregar cualquier archivo y mire la salida en la ventana de su consola para ver las advertencias de nombre de archivo.

Si su SO es Ubuntu, puedo brindarle alguna 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. Comience Eclipse:

     sudo eclipse 
  4. Ejecutar proyecto -> Limpiar en Eclipse

El 100% tiene un error en un archivo XML , pero la verificación XML no le muestra el error. ¡Esta es la razón por la cual necesita verificar primero sus archivos XML!

SIEMPRE es útil echar un vistazo a la pestaña Problemas en Eclipse. En mi caso, recibí un mensaje de error ” android-8 incapaz de resolver el destino ‘android-8’ ” que impedía generar el R.java. Entonces, corregí el objective importado al que estaba usando en el archivo default.properties , luego realicé una limpieza a través de Projects-> Clean y ¡listo! R.java se genera automáticamente! ¡Espero eso ayude!

El proyecto de limpieza, el cierre de Eclipse, la reapertura y el lanzamiento de mi proyecto finalmente hicieron reaparecer mi R.java … Espero que ayude

Asegúrate de no estar importando

android.R;

R.java nunca se generará si hay algún error 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 un 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 R.java es creado.

Descubrí que cualquier archivo que tenga letras mayúsculas en la carpeta res creará este error. Esto me pasó 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 R.java falta R.java por diferentes razones.

Así es como arreglé esto en Eclipse:

  • Crea R.java en la carpeta gen manualmente y guarda.
  • 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!

Para mí, había vinculado 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 desmarque cualquier duplicado en la sección Biblioteca. Es posible que necesite Build -> Clean después.

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

R.java desaparecer a R.java después de (intentar) una Sincronización de equipo, y había 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

Tuve este problema Accidentalmente borré esto

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

que comenzó a causar errores de comstackció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 🙂

De acuerdo, entonces está claro que puede haber muchas causas para este problema. Si está en una máquina con Linux de 64 bits y acaba de configurar 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, necesita instalar ia32-libs, usando algo como:

  sudo apt-get install ia32-libs 

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

He encontrado este problema algunas 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 del paquete example.test, entonces descubrí que tenía que importar example.test.R para acceder a cualquiera de los recursos.

Si no se importó, los recursos que se devolvían eran los recursos predeterminados sin ninguno de los míos.

Dicho esto, si descubres que solo obtienes una lista de recursos predeterminados, simplemente asegúrate de que estás importando application_package_name.R y no android.R.

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

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

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 SDK a la última versión. También busca actualizaciones en Eclipse. Las versiones que no coinciden me causaron el problema.

Mi problema estaba dentro de un archivo de menú. El comstackdor no parece advertirle si las cadenas que no existen dentro de strings.xml se referencian en los archivos de menú. Verifique si sus item en los archivos XML de su menú hacen referencia a cualquier cadena que no exista en su strings.xml . Por lo general, en android:title .

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

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

 ${project.basedir}/gen 

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

Encontré una solución por la cual R.class no está hecho por Eclipse después de volverlo a hacer: 2 limpio, comstackdo, etc.

El problema está aquí en strings.xml:

 Hello World, HelloAutoComplete! HelloAutoComplete 

Éstos están creados por defecto por Eclipse cuando crea proyectos.

Definitivamente usted está cambiando strings.xml para su propio requisito. A veces borras el string.xmls estas dos líneas de tu código:

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

   

Por lo tanto, no se puede comunicar con strings.xml.

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