el paquete R no existe

114

Estoy recibiendo el temido paquete Rque no existe, me está matando. El código está bien. Tengo aplicaciones en el mercado que ejecutan el código.

Ahora está efectuando webviewaplicaciones simples . o.0

R.string.app_nameestá equivocado main.xmly string.xmlestá bien. Estoy tan confundido.

Volví a abrir una versión anterior a "borrow"un código y se inundó con R. errors.Hice una limpieza y no cambió nada, excepto que R.androidse agregó la importación en la parte superior.

Incluso cargué en Netbeans y obtengo lo mismo. Limpiar no funciona. ¿Puedo escribir el R.javaarchivo yo mismo?

¿Qué es esta Rcosa? no lo es R. se supone que corresponde aR.java

Taz Ryder
fuente
1
verifique la carpeta res en busca de errores, si tiene algunos proyectos agregados como biblioteca, verifíquelos también
Sunny Kumar Aditya
1
Presione Alt + Enter en la línea setContentView (R.layout ... para agregar la importación.
live-love

Respuestas:

127

Para cualquiera que se encuentre con esto, lo refactoricé cambiando el nombre de las carpetas del espacio de nombres. Me olvidé de editar también AndroidManifest y es por eso que recibí este error.

Asegúrate de marcar esto también.

Mathijs Segers
fuente
1
Parece que solo puedo acceder a R desde mis clases de actividad. Recibí este error al intentar acceder desde otros archivos de clase.
Joe Lapp
84

Solo para hacer esto simple:

import your.app.package.R;

Por supuesto, reemplazando your.app.packagecon su paquete de aplicación.

En todas las clases que usan referencias de recursos R, elimine cualquier otra importcon .R, es decirimport android.R;

ocodo
fuente
3
Al usar Cordova, esta es la solución adecuada. Probado con Cordova 3.0.9
Peter
1
De hecho, mi error. Esto permite que el proyecto Cordova se CONSTRUYA correctamente, sin embargo, la pantalla de bienvenida NO aparece ... Por lo tanto, esta solución no resuelve el problema en cuestión.
Peter
Esto es lo que necesitaba hacer al convertir un proyecto de prueba de Eclipse en un módulo de Android Studio.
RightHandedMonkey
Si está utilizando phonegap y agrega la declaración de importación anterior dentro de su archivo de complementos, asegúrese de eliminar la plataforma y agregar nuevamente. Así phonegap platform remove androidyphonegap platform add android
Fawaz
54

TL; DR , si obtiene el error "el paquete R no existe", las posibles razones son

  • algún error en los archivos de recursos XML
    -> corregir errores XML
  • el paquete actual es diferente del Rpaquete (vea el package atributo en AndroidManifest.xml)
    -> importar Rclase, por ejemplo import com.example.android.R;
    -> o use el paquete apropiado en su fuente, por ejemplo package com.example.android;
    -> o cambie el atributo del paquete en AndroidManifest.xml a <manifest xmlns:android="..." package="com.example.android" ...>, si es apropiado
  • los Ridentificadores usados son de los recursos del sistema
    -> no importar android.R, pero prefijo los identificadores ofensivos con android., por ejemplo, android.R.layout.simple_list_item_2
    puede importar en android.Rlugar de prefijar los identificadores, por supuesto, pero luego ya no puede importar la Rclase de la aplicación y debe prefijar los identificadores de la aplicación, por ejemplo com.example.android.R.id.main_menu.

La R clase se genera automáticamente a partir de los recursos de la aplicación. Contiene los ids para estos recursos y está contenido en el paquete nombrado en la <manifest> etiqueta en el AndroidManifest.xmlarchivo correspondiente .

Si no hay errores en los archivos XML de recursos, la R.javafuente se generará en un subdirectorio de paquetes a continuación gen/y se compilará.


Hay otra Rclase ubicada en el androidpaquete. Esta android.Rclase contiene algunas clases anidadas, que a su vez contienen idsy otros valores para los recursos del sistema .


Para usar una clase en Java, debe nombrar la clase con el paquete completo, por ejemplo

java.util.List<Object> list = new java.util.ArrayList<Object>();

o importar la clase y luego usarla sin paquete

import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();

También puede usar una clase sin nombrar el paquete, si tanto la clase actual como la clase usada están en el mismo paquete, por ejemplo

package com.example.android;
public class A {
    /* ... */
}
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}
Olaf Dietsche
fuente
1
En mi caso, el problema era classpath 'com.android.tools.build:gradle:3.3.0'. Lo cambié a classpath 'com.android.tools.build:gradle:3.2.1' y el problema se resolvió.
Mohit Rajput
25

¡Nunca, nunca intentes escribir la clase R tú mismo!

¿Ha importado la clase R correcta en sus archivos?

Haciendo

import android.R;

en vez de

import com.example.R;

parece ser el problema para mucha gente. Después de limpiar y construir, mis clases a veces importan la incorrecta.

J. Maes
fuente
3
Pero no entiendo que la cosa R no estaba allí cuando inicialmente codifiqué y cumplí con el programa.
Taz Ryder
12

Si está desarrollando en Android Studio y refactorizó el nombre del paquete, debe cambiar el nombre del paquete en el manifiesto de Android y el archivo Gradle de la aplicación.

 applicationId "change here your package name"

y en archivo de manifiesto

 package="change here your package name"
Milon
fuente
Sí. Mayúsculas ligeramente diferentes del nombre de la aplicación, por ejemplo.
Steve White
9

R.java es un archivo autogenerado, por lo general no se compila si tiene errores en el archivo xml.

No No puede escribir su propio archivo R.java, debe ser generado por el compilador de recursos.

Compruebe si hay errores en todos sus archivos xml.

nandeesh
fuente
1
¿Qué tipo de errores y cómo debe detectarlos un principiante?
user1725145
6

La clase R es un código Java generado automáticamente a partir de sus archivos XML (diseño de interfaz de usuario, cadenas de internacionalización, etc.) Si el código solía funcionar antes (como parece), debe decirle a su IDE que regenere estos archivos de alguna manera :

  • en IntelliJ, seleccione Herramientas> Android> Generar fuentes para <proyecto>
  • (Si conoce el camino en otro IDE, ¡no dude en editar esta respuesta!)
DomQ
fuente
Esta fue la ans que busqué. Gracias .. +1
Adhikari Bishwash
5

Supongo que solía funcionar pero ahora ya no ...

Esto puede suceder si cambia el nombre del PAQUETE dentro de su archivo MANIFEST

<manifest
   package="com.example.android...."

Si desea cambiar el nombre del paquete

  1. Cambie el nombre del paquete manualmente en el archivo de manifiesto.
  2. Haga clic en su clase R.java y presione F6. Le permitirá mover la clase a otro paquete, y se actualizarán todas las referencias a esa clase.
Emanuele Greco
fuente
¡Eres un dios! Estaba cambiando mi proyecto de com.example.rickydam.txtbooksa com.txtbooks.txtbookshaciendo un nuevo proyecto y moví todo al nuevo proyecto pero no pude encontrar R. Intenté invalidar cachés, sincronizar con gradle, limpiar el proyecto, reconstruir el proyecto, reinstalar SDK-tools ... ¡Nada funcionaba! ¡Pero tu solución solucionó mi problema! ¡Gracias de nuevo! ¡Sigue codificando!
Ricky Dam
4

Me encontré con este error mientras usaba Bazel para crear una aplicación de Android:

error: package R does not exist
                + mContext.getString(R.string.common_string),
                                      ^
Target //libraries/common:common_paidRelease failed to build
Use --verbose_failures to see the command lines of failed build steps.

Asegúrese de que su android_library/ android_binaryesté usando un atributo AndroidManifest.xmlcorrecto package=, y si está usando el custom_packageatributo en android_libraryo android_binary, asegúrese de que esté escrito correctamente.

Jin
fuente
3

Eliminar importación android.R; de todos los archivos ... una vez que limpie el proyecto y compile el proyecto ...

satish
fuente
3

Ejemplo: Mi paquete es com.example.mypc.f01 , para corregir el error, agregue la siguiente línea a la Actividad:

import com.example.mypc.f01.R;

O Thạnh Ldt
fuente
3

A continuación se muestran algunas técnicas que puede utilizar para eliminar este error: -

  1. Limpia tu proyecto, Buidl-> proyecto limpio
  2. Reconstruir proyecto, Construir -> Reconstruir proyecto
  3. Abra el manifiesto y compruebe si falta algún recurso
  4. Diseño de check-in a una identificación particular si falta agregarlo
  5. Si los pasos anteriores no funcionaron, reinicie Android Studio invalidando el caché
Budhdi Sharma
fuente
2

En mi caso, me di cuenta de que estaba creando varios paquetes en el proyecto. Dentro del Manifiesto de Android, encontré que el nombre del proveedor contenía incorrectamente el valor de MyContentProvider en lugar de .provider.MyContentProvider. Mi paquete principal (con la interfaz de usuario) era co.companyname.database.provider en lugar de co.companyname.database.

Luego, en las declaraciones de importación para la clase afectada, simplemente hice clic con el botón derecho y le pedí a Android Studio (0.8.6) que optimizara mis declaraciones de importación. También noté que si busca .R en la barra de búsqueda AS en la esquina superior derecha del IDE, puede encontrar un archivo R.java generado automáticamente que es parte de su paquete. En este punto, no tienes que cambiar nada. Studio debería arreglar el proyecto después de corregir el archivo de manifiesto de Android y reconstruirlo.

Otro elemento es que en una clase estaba haciendo uso de toString (). Length () para evaluar una cadena, pero las cambié por TextUtils.IsEmpty (stringVal); No puedo pensar en nada más que hice para resolver el problema.

Espero que esto ayude a alguien.

NB - Todo esto es con AS 0.8.6

PD

R.java se genera automáticamente, así que lea el encabezado: / * ARCHIVO GENERADO AUTOMÁTICAMENTE. NO MODIFIQUE. * * Esta clase fue generada automáticamente por la herramienta * aapt a partir de los datos de recursos que encontró. * No debe modificarse a mano. * /

Tommie C.
fuente
2

Cuando experimenté esto, creé un nuevo proyecto y copié los archivos de mi antiguo proyecto al nuevo.

  1. Iniciar un nuevo proyecto
  2. Agregue los archivos antiguos al nuevo proyecto (copie y haga clic con el botón derecho en Layout, drawables, com.packagename, ...) para pegar mis archivos de proyectos antiguos

Sin embargo, todavía tenía el mismo problema: R does not exist. Luego me di cuenta de que había copiado y pegado Manifest desde mi bloc de notas en los manifiestos de Android Studio y no había cambiado el nombre del paquete en el archivo de manifiesto.

Por lo tanto, una vez que cambié el nombre del paquete en el manifiesto al nuevo nombre del proyecto, el nuevo proyecto que había creado funcionó bien.

Jesús Rojo
fuente
1

¿Qué archivos está importando a los archivos que reciben el error R?

Según tengo entendido, el archivo R es que se generan automáticamente listas de referencia para todos los atributos dentro de la aplicación de Android. Por lo tanto, no puede cambiarlo usted mismo.

¿Estás usando Eclipse para construir este proyecto? ¿Se cometieron estos errores en los proyectos más antiguos antes de actualizar Eclipse? ¿Cuáles son las referencias que están obteniendo errores?

Verifique que no haya importado otro archivo R de otro código copiado en otra aplicación.

Mono musical
fuente
Tuve problemas de R cuando el archivo AndroidManifest.xml y el archivo project.properties dentro del proyecto no muestran el mismo objetivo / versión mínima de Android.
Music Monkey
1

Me encuentro con este problema cada vez que cambio de computadora e intento importar proyectos antiguos desde archivos transferidos a través de un USB.

Mi solución es simplemente crear un nuevo proyecto y copiar (arrastrar) los archivos al IDE (actualmente usando Netbeans) y reconstruir. Esto es una molestia y una solución un poco hacky, pero soluciona el problema.

Si esto le sucede, el peor de los casos es que tenga que hacer una copia de seguridad de sus archivos, eliminar el proyecto y simplemente arrastrar los archivos allí y volver a compilarlos. Ojalá no llegue a eso, pero esa sería su opción nuclear.

usuario5101322
fuente
1

Puedes intentar

Menú superior de Android Studio> Archivo> Invalidar cachés / reiniciar ...

Haga clic en el botón invalidar caché / reiniciar para reiniciar su proyecto

Resuelva R.xxxx.xxx nuevamente si algunos fragmentos de la clase R no se resolvieron correctamente

luego reconstruye tu proyecto

Espero eso ayude

Ethan Liew
fuente
0

Si encuentra este error en Android Studio:

Verifique los archivos del módulo Gradle -> defaultConfig -> applicationId setting.

Compruebe la etiqueta del paquete de manifiesto AndroidManifest.xml ->.

Verifique las declaraciones del paquete en todos los archivos src java.

Sincronizar, limpiar y luego reconstruir con Gradle.

NUNCA cree su propio archivo R. R se genera automáticamente a partir de los archivos de origen java y la configuración de compilación.

rask004
fuente
0

Tenía: "error: el paquete R no existe" y asumí que javac no tenía acceso a R.java.
Así que agregué% PROJ_LOC% \ gen a sourcepath, ¡y funcionó! SOURCEPATH =% PROJ_LOC% \ src;% PROJ_LOC% \ gen

No estoy usando Android Studio o Ant (o XML).

chatt
fuente
0

Si este error apareció después de resolver los conflictos de fusión, un proyecto simple Build -> Clean podría ayudar.

Dmitry Smolyaninov
fuente
0

Acabo de deshacerme del error en mi proyecto. Había importado un proyecto de muestra, había cambiado las carpetas del paquete pero no había actualizado el paquete en uno de los archivos java.

La causa más probable de este error "el paquete R no existe" es que el nombre del paquete en Java o el archivo de manifiesto es incorrecto. Asegúrese de que sea correcto y esté sincronizado y luego haga una construcción limpia.

Ajay B
fuente
0

A veces, se resuelve cuando simplemente vuelve a importar el proyecto a Android Studio.

Aung Pyae
fuente
0

Ruta incorrecta: el proyecto "cobra" los punteros a las imágenes y si ha realizado cambios de nombre en la ruta, por ejemplo, paquetes o carpetas refactorizados. Luego, simplemente escriba la letra R nuevamente y el editor sugiere la ruta correcta y funcionará. En este caso, sus nombres de archivo son correctos y el contenido al que se hace referencia en el puntero R. está presente, pero la ruta es incorrecta, por lo que limpiar y compilar no funcionará.

Patrik Rikama-Hinnenberg
fuente
0

Otro caso de rotura de R. es el procesamiento de anotaciones .

Algunos procesos podrían referirse a clases ubicadas en determinadas carpetas o niveles de carpeta. Si mueve las clases requeridas a otra ubicación, puede obtener R. como una clase desconocida.

Desafortunadamente, el indicador de error de este problema no es evidente en Android Studio.

Zon
fuente
0

No hay beneficio de escribir R.java usted mismo porque se cambia en cada compilación,

Solo recuerde usar R.something, por ejemplo: R.raw.filename desde clases internas que tiene un valor de paquete similar al valor de paquete dentro de AndroidManifest.xml

porque los ID de recursos de R. se definen para la aplicación o biblioteca actual y todos se verifican si existen en el tiempo de compilación, por lo que no tiene sentido permitir que se acceda a ellos desde un "código" que no se dirige a la aplicación o biblioteca actual y puede ser utilizado en otros lugares.

Mustafa R.Mahdi
fuente
0

Olvidé agregar el "nombre" de mi "paquete" en la parte superior de mi clase Java. Verifique si el suyo está realmente agregado.

JESUCRISTO ES EL ÚNICO CAMINO T
fuente
-2

Soluciono mi problema:

el paquete R no existe

.

Ir a AndroidManifest.xmlarchivo y cambiar el minSDKVersion="17"de 19

Fazal
fuente
Siento disentir. No debe tener minSDKVersion en el archivo AndroidManifest.xml según los estándares actuales. Si lo tiene, elimínelo del archivo AndroidManifest.xml, es un código redundante. MinSDKVersion y targetSdkVersion deben definirse solo en el archivo build.gradle.
Ajay B