Si eres desarrollador de Android, es posible que en algún momento te hayas encontrado con el frustrante error «Cannot resolve symbol ‘R’«. Este error se produce cuando el sistema de compilación no puede encontrar la clase R, que es generada automáticamente por el sistema y contiene las referencias a los recursos de tu proyecto, como IDs de recursos, nombres de layout y strings.

 error "Cannot resolve symbol 'R'

Las razones por las que puede producirse este error son las siguientes, de más comunes a menos:

Errores en los archivos de recursos

Los archivos de recursos son elementos esenciales en el desarrollo de aplicaciones Android, pero incluso un pequeño error en uno de estos archivos puede producir el temido error «Cannot resolve symbol ‘R’ «. Por lo que primero te recomiendo que revises los ficheros xml de tu proyecto que hayas creado recientemente, que posiblemente sean el causante de este problema.

Los problemas más comunes de estos ficheros son errores de sintaxis (propiedades de los elementos xml no existentes, un cierre faltante o de sobra, algún nombre de elemento o referencia a otro recurso mal escrito..). Empieza por revisar los últimos xmls modificados ya que tienes más probabilidades de «haber metido la pata» ahí y haber provocado el dichoso error.

Incoherencias en los nombres de paquetes

A veces, al cambiar el nombre de paquete de la aplicación rompemos la generación de la clase R de nuestro proyecto. Esto se debe a que la clase R se genera automáticamente a partir del nombre de paquete principal de tu aplicación. Ese nombre lo tendrás definido en el fichero de configuración principal «AndroidManifest.xml» y debe ser idéntico al de tu proyecto. Cualquier diferencia entre el nombre configurado en este fichero xml y el que usas en tu proyecto (incluso una simple diferencia de mayúscula-minúscula) hará que tu clase R no pueda generarse correctamente y desencadenará el error «Cannot resolver symbol ‘R’ «.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp"
    android:versionCode="1"
    android:versionName="1.0" >
    ...
</manifest>

En la página oficial de desarrolladores de Android puedes encontrar más información.

Problemas de compilación (código, dependencias)

Este es menos común ya que posiblemente no te encuentres problemas de compilación en tu proyecto, hayas ido arreglando todos los posibles errores de los cuales el compilador te ha ido avisando. Pero no nos olvidemos de los errores de compilación que se dan en el momento de construir el proyecto. Para detectar si hay alguno, reconstruye tu proyecto ejecutando la opción «Make Project» del menú «Build» si usas Android Studio.

Ahora revisa en la pestaña de Build Output en la parte inferior los erroes que te muestre el IDE. En este caso, sólo tenemos el error del que hablamos, lo cual es buena señal de que no tenemos ningún problema en alguna de las otras clases o con alguna dependencia.

En este momento te diría que revises tu fichero build.gradle (app) para comprobar que no tengas ninguna dependencia con problemas o conflictos entre ellas. Si esto provoca errores de resolución de depencias puedes acabar obteniendo ese error.

Problemas de caché

Simplemente, a veces se producen errores que no deberían estar ahí, ya que no se está reconstruyendo correctamente el proyecto mientras codificamos. Podemos lanzar desde el menú «Build» > «Clean Project» y hacer de nuevo un Build. O incluso a veces reiniciar Android Studio nos solventa este error.

Otra posibilidad que puedes intentar es usar la opción de invalidar cachés en el menú «File», y luego marcas las opciones y reinicas Android Studio, esto puede que te ayude si algo se ha quedado corrupto y no se reconstruye correctamente.

Espero que estas orientaciones te sirvan para poder detectar el origen de tu error «package R does not exist» y puedas seguir con tu proyecto sin más incovenientes.

Cómo afrontar el error Cannot resolve symbol ‘R’
Etiquetado en:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Social media & sharing icons powered by UltimatelySocial