R ne peut pas être résolu-erreur Android

je viens de télécharger et installer le nouveau SDK Android. Je voulais créer une application simple pour le tester.

le magicien a créé ce code:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

mais Eclipse me donne l'erreur

R ne peut être résolu

sur la ligne

setContentView(R.layout.main);

pourquoi?

PS: j'ai un fichier XML nommé main.xml sous res/layout/ .

996
demandé sur Maurizio Pozzobon 2009-05-20 01:02:20

30 réponses

après avoir traqué ce problème aussi, j'ai trouvé cette note dans la documentation Android:

http://source.android.com/source/using-eclipse.html

*Note: Eclipse aime parfois ajouter un " importer android.R" énoncé à l' haut de vos fichiers qui utilisent des ressources, surtout quand vous demandez de l'Éclipse à trier ou gérer les importations. Ce causera votre faire briser. Regarder pour ces importations erronées les déclarations et les supprimer.*

en parcourant les exemples de tutoriels Android, j'utilisais souvent la commande Ctrl + Shift + O pour" organiser les importations " et générer toutes les déclarations d'importation manquantes. Parfois, cela générerait la déclaration d'importation incorrecte qui cacherait la classe R.java qui est automatiquement généré lorsque vous générez.

819
répondu Michael Levy 2012-08-13 17:58:22

chaque fois que j'ai eu un problème avec R Non généré, ou même disparu, c'était en raison d'un problème dans le fichier de mise en page XML qui a empêché l'application d'être construit.

379
répondu Luc 2012-03-13 00:31:43

chaque fois que vous obtenez

R ne peut être résolu

, puis vérifier le /res répertoire et il doit y avoir un fichier qui a une erreur et c'est la prévention de l'application. Par exemple, il peut s'agir d'un fichier de mise en page ou d'une ressource manquante, mais que vous avez déjà définie dans le fichier XML.

si vous avez un supplément, même non utilisé (!) ou non référencées (!) images dans un dossier comme res/drawables-mdpi qui ne respectent pas les conventions de nommage des fichiers (ne peut contenir que [a-z0-9_.]), le R.java class pourrait ne pas générer, provoquant la chaîne d'événements tous les autres messages mentionnés. Espérons que cela aide!

195
répondu Kailash 2012-08-28 08:06:21

mon projet ont inclus un r. java.au début, R. layout.principal du bon travail.Mais, après avoir ajouté du code, cela ne fonctionne pas,et l'erreur est R. layout.principale peut pas résolu.quel est le problème?

Regardez vos importations. Les Chances sont que la ligne:

import android.R;

sera là. Si c'est le cas, supprimez-le, de sorte que votre projet résolve R non pas avec la classe de ressources Android par défaut, mais avec celle généré automatiquement à partir de votre dossier /res/.

130
répondu Dimitar Dimitrov 2012-09-12 21:23:46

et une autre chose qui peut causer ce problème:

j'ai installé le nouvel ADT (v. 22). Il a cessé de créer gen dossier qui comprend R.java . La solution était également d'installer de nouveaux outils de construction SDK Android à partir de Android SDK Manager.

Solution trouvée ici

93
répondu Michał K 2013-07-04 20:40:15

R.java est un fichier créé par les plugins Android Eclipse construire votre application. R.java est créé sous le" gen" répertoire. Ce fichier est généré à partir de l'information dans la "res" répertoire. Si vous exécutez sélectionner "projet" -> "propre..."sur l'Eclipse menu, il va supprimer puis régénérer le fichier R.java .

le problème "R ne peut pas être résolu" se produit lorsque vous changez votre nom du paquet dans le fichier AndroidManifest.xml . Il utilise votre Android nom du paquet pour créer un sous-répertoire sous le répertoire "gen" où il stocke le fichier R.java .

Eclipse peut avoir des problèmes d'exécution propre, parce qu'il est confus sur où le fichier R.java se trouve lorsque vous avez modifié le paquet Android nom. Vous pouvez renommer le sous-répertoire sous gen pour correspondre à votre nouveau nom de paquet, ou vous pouvez changer le nom de votre paquet de nouveau à l'ancien nom. Faire le nettoyage et ensuite changer le nom du paquet en le nouveau nom vous voulez. Cela fonctionne mieux si vous arrêtez Éclipse en essayant de construire pendant que vous changez le nom du paquet. Sous le menu "Projet" décochez l'option "Construire Automatiquement" et quand les "Propre..."dialog demande si elle devrait" démarrer une construction immédiatement" décochez la boîte pour qu'elle n'essaie pas de construire pendant que vous changez le nom du paquet. Après avoir changé le nom, vous pouvez activer "Construire Automatiquement" à nouveau.

notez que si votre AndroidManifest.xml le nom du paquet ne correspond pas votre nom de paquet Java, Eclipse finira automatiquement par ajouter un "import .R;" ligne de tous vos .java fichiers qui ont des références à R. Si vous changez votre AndroidManifest.xml nom du paquet, parfois Eclipse ne met pas à jour tous ceux ajoutés importation. Si cela se produit, utilisez le remaniement de L'éclipse ( ALT + Shift + R ) pour modifier la déclaration d'importation en un de vos fichiers Java à votre nouveau nom de paquet AndroidManifest.xml . Il est préférable de faire cela alors que vous avez désactivé "construire automatiquement".

86
répondu 2 revs, 2 users 74%user286516 2012-03-13 00:38:02

ce que Will a dit était juste

R est une classe générée automatiquement qui contient les constantes utilisées pour identifier vos >ressources. Si vous n'avez pas de R.java (ce serait gen/eu.mauriziopz.gps/R.java dans > Eclipse avec le SDK 1.5) je recommande la fermeture et la réouverture de votre projet ou aller à >Project > Build all (et sélectionner "Build automatic" pendant qu'il est recommandé par >Josef). Si cela ne fonctionne pas, que d'essayer d'en faire un nouveau projet, si le problème est recréé à >poster ici à nouveau, et nous allons entrer dans plus de détail.

mais j'ai découvert qu'il y avait un autre problème qui causait le premier. Les outils dans le répertoire SDK n'avaient pas les permissions pour être exécutés, donc C'était comme si le N'existait pas pour Eclipse, donc il n'a pas construit le fichier R.java .

modifier la permission et sélectionner" construire automatiquement " a résolu le problème.

82
répondu MaurizioPz 2012-03-13 00:30:07

R est générée automatiquement classe qui contient les constantes utilisées pour identifier vos ressources. Si vous n'avez pas de R.java (ce serait gen/eu.mauriziopz.gps/R.java dans Eclipse avec le SDK 1.5) je recommande de fermer et de rouvrir votre projet ou D'aller dans Project > Build all (et de sélectionner "Build Automatically" pendant Qu'il y est recommandé par Josef). Si cela ne fonctionne pas que d'essayer de faire un nouveau projet, si le problème est recréé que le post ici à nouveau et nous allons plus en détail.

37
répondu Will 2009-05-20 01:46:29

fermez tous les fichiers, nettoyez le projet, redémarrez Eclipse.

27
répondu sharika 2013-03-01 12:35:33

Il est intéressant de vérifier dans AndroidManifest.xml . L'attribut package a la valeur correcte.

C'est-à-dire:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

après avoir changé cela, le R.java sera généré de nouveau.

22
répondu seven 2017-12-11 07:06:37

Cette erreur peut aussi être causée par l'ajout d'une activité à un espace de noms différent de l'espace de noms racine de votre colis.

par exemple, si com.example.myapp est l'espace de noms racine de votre paquet, vous pouvez alors ajouter une activité à l'espace de noms com.example.myapp.activities .

cela produira l'erreur" R ne peut pas être résolu".

pour fixer l'importation le R dans l'espace de noms par défaut dans votre activité devrait être:

import com.example.myapp.R;
19
répondu Rob 2012-03-13 19:22:44

avec les grandes suggestions dans les réponses précédentes, assurez-vous que votre cible Android est fixé:

  1. clic droit sur votre projet
  2. Choisir Des Propriétés
  3. choisissez Android dans le menu de gauche
  4. cochez une case à côté de l'objectif de construction du projet approprié.
  5. cliquez sur Appliquer et OK

Edit: un an plus tard, j'ai trouvé une autre cause. J'ai eu un. image jpg dans mon dossier à dessiner avec le même nom que A.Image png. Référencer cette image dans mon code doit avoir confondu le programme et il a donné le "R ne peut pas être résolu" erreur.

19
répondu satyrFrost 2014-08-25 06:51:53

assurez-vous que vous avez installé L'outil de construction Android formulaire sdk manager

propriétés de clic droit de projet - > Java BuildPath sélectionner la bibliothèque et ajouter android-support.pot de suivre ces étapes.

Allez dans Projet->Propriétés->Java Build Path de choisir l'Ordre et de l'onglet exporter. Mettez android-support .bibliothèque jar vérifié et jusqu'en haut de la liste. Et nettoyer et reconstruire .. cela fonctionne pour la plupart des cas

enter image description here

16
répondu Sunil Kumar 2013-08-29 07:09:04

je viens d'avoir ce problème pour la millionième fois et j'ai réalisé ce qui le causait: j'ai créé un fichier XML avec des lettres majuscules dans le nom. Tous vos noms de fichiers XML dans /res doivent correspondre à [a-z0-9\._] .

14
répondu 2 revs, 2 users 67%user132014 2012-03-13 00:48:44

solution la plus simple - parfois, vous avez juste besoin de sauvegarder le fichier XML sur lequel vous travailliez pour obtenir l'autogénérateur pour démarrer.

Enregistrer le fichier (par exemple les principaux.xml) puis supprimer le R.java fichier et voir si le régénéré R.java résout le problème.

13
répondu akim 2012-10-04 16:22:51

R est une classe générée. Si vous utilisez le Android Development Tools (ADT) il est généré à chaque fois que le projet est construit. Vous pouvez avoir' construire automatiquement ' désactivé.

12
répondu Josef 2012-08-13 16:53:10

vérifiez les noms des fichiers XML. Assurez-vous qu'ils sont tous en minuscules.

assurez-vous également que tous les noms de ressources d'image sont aussi en minuscules. J'avais une lettre majuscule dans le nom de mon fichier jpg, et cela a causé l'erreur non résolue r tout au long de mon projet.

11
répondu TonyS 2012-07-05 11:32:58

cette erreur est apparue sur mon installation x64 Linux Mint. Il s'est avéré que le résultat a été un échec dans le ADB binaire, parce que le ia32-libs paquet n'a pas été installé. Le simple fait d'exécuter apt-get install ia32-libs et de relancer Eclipse a corrigé l'erreur.

si votre distro x64 n'a pas ia32-libs, vous devrez aller Multiarch.

cochez #4 et #5 sur ce post: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883

J'espère que ça aidera quelqu'un.

10
répondu Meião 2014-01-21 01:17:50

vous pourriez avoir besoin de mettre à jour les outils SDK. Relancez Android SDK Manager et installez un nouvel élément: Android SDK Build-tools.

enter image description here

9
répondu Eduardo Dennis 2013-11-06 04:19:43

vous pourriez avoir besoin de mettre à jour/installer des outils SDK. Relancez Android SDK Manager et installez un nouvel élément: Android SDK Build-tools.un par un, supprimez, réparez lequel fonctionne pour vous. enter image description here

9
répondu Nazmul Hasan 2016-04-02 01:36:28

j'ai eu ce problème aussi. Il s'est avéré que j'avais supprimé par inadvertance la ressource de chaîne "app_name" du fichier strings.xml , ce qui causait une erreur silencieuse. Une fois que je l'ai rajouté, la classe R a été générée avec succès et tout était de nouveau opérationnel.

7
répondu Guy Starbuck 2012-08-13 16:53:59

première vérification s'il y a une erreur dans une mise en page xml ou non, résolvez-la d'abord.

sinon supprimer la dépendance de junit du projet et reconstruire le projet.

enter image description here

6
répondu Jaimin Prajapati 2017-03-28 07:59:45

essayez de rendre votre nouveau nom de fichier de mise en page XML minuscule. Par exemple, utilisez my_file.xml au lieu de myFile.xml .

5
répondu Malcom 2012-03-13 00:41:13

encore une autre raison R.java pourrait ne pas être autogénérée est si vous avez des répertoires comme res/drawable-hdpi , res/drawable-mdpi , ou res/drawable-ldpi .

1.6+ semble être OK avec ces répertoires, mais 1.5 ne les veut pas. Quand j'ai enlevé ces répertoires, R.java a recommencé à s'autogénérer pour moi.

5
répondu Peter Mortensen 2012-08-13 17:56:07

il suffit d'aller à Android TOP menu list. cliquez sur Build Menu, sous "Build" cliquez sur Rebuild Project .

enter image description here

5
répondu Gundu Bandagar 2016-03-29 06:28:20

j'ai eu les exemples D'Android 8 et j'ai essayé D'utiliser Android 7 SDK. Quand J'ai fermé le projet et rouvert le dossier d'application et choisi D'utiliser Android 8 SDK, il a été en mesure de trouver le fichier R. Espérons que cette aide.

4
répondu vkris 2010-11-21 16:48:40

Dans mon cas, j'avais une erreur dans mon AndroidManifest.xml . D'autres ont dit que vos fichiers XML doivent être exempts d'erreurs, mais je ne regardais que dans le dossier res/. Trouver et corriger autant d'erreurs possibles et le problème peut bien se résoudre lui-même.

4
répondu Brian Lacy 2011-12-21 17:09:28

souvent c'est à cause du numéro de version MinSDK que vous avez fourni lors de la création du projet. Exemple:

si vous voulez que 2.1 soit le minimum, Android 2.1 est en fait API Niveau 7.

vous pouvez voir de quoi je parle quand vous parcourez le SDK que vous avez téléchargé et installé. Naviguez jusqu'à l'endroit où vous avez installé le SDK ( C:\android-sdk-windows par exemple) et ouvrez le dossier nommé "plates-formes". Vous verrez quelque chose comme "android 7" figurant comme un dossier, et si vous ouvrez qu'il y a un fichier source.properties qui, une fois ouvert avec un éditeur de texte, vous montrera la version de plate-forme correspondante.

lorsque vous créez un projet, et que vous devez sélectionner une API" Build Target", la dernière colonne de cette liste nommée" API Level " affiche le numéro que vous recherchez lorsque vous saisissez le paramètre MinSDK.

il s'agit probablement de l'une des erreurs les plus fréquentes qui a pour conséquence que le fichier R.java n'est pas créé dans le cadre du projet > gen > packagename > R.java.

4
répondu Aaron DeRenard 2012-03-13 00:46:51

Supprimer main.out.xml . Je ne sais pas encore à quoi sert ce fichier, mais son élimination a réglé le problème.

4
répondu user389061 2012-03-13 00:49:34

malheureusement, aucune des questions existantes n'a aidé. Puisque mon problème semble spécifique à la plate-forme, cela ne peut fonctionner que si vous êtes sur Ubuntu 64 Bit (j'utilise actuellement Ubuntu 12). Au début je n'ai pas vu la fenêtre "problèmes", qui laissait déjà entendre une solution, que sur l'environnement 64 bits vous avez besoin des libs 32 bits, qui peuvent manquer:

sudo apt-get install ia32-libs

j'ai installé le paquet et reconstruire mon projet, qui a réglé le problème pour moi.

4
répondu Bernhard Kircher 2013-03-24 11:53:42