web-dev-qa-db-fra.com

Android - Comment régénérer la classe R?

Duplicate possible:
Développement pour Android dans Eclipse: R.Java ne génère pas

J'ai importé un projet dans mon IDE Eclipse, mais cela me donne une erreur car le fichier R n'est pas généré automatiquement.

Comment puis-je modifier le fichier R afin qu'il corresponde aux exigences de mon projet?

76
zorglub76

Ok, je l'ai corrigé:

Lorsque j'ai modifié manifest pour cibler la version 1.5, un million d'erreurs sont apparues et une seule n'était pas liée à l'inexistence de classe R - dans les attributs de fichier manifest "targetSdkVersion" et "maxSdkVersion" n'existaient pas dans sdk 1.5.

A cause de cela, la classe R n'a pas pu générer.

15
zorglub76

Dans autre question de stackoverflow , quelqu'un a répondu à ceci: vous devez vous débarrasser des avertissements et des erreurs (syntaxe et liens) dans vos fichiers xml. Ceci plus faire un projet de nettoyage/construction.

Projet -> Nettoyer et choisissez l'option pour générer le projet.

47
Goufalite

J'ai constaté que cela m'arrivait avec une mise en page brisée et que tout explose. Détendez-vous, c'est comme cette vieille erreur quand vous avez appris à programmer, vous oubliez un point-virgule et cela génère cent erreurs. Beaucoup de panique, appuyez sur tous les boutons, et aggrave les choses.

Solution

  • Assurez-vous que quoi que ce soit le R. liens vers n'est pas cassé. Si c'est cassé, ADK ne peut pas régénérer R. Corrige toutes les erreurs dans tes fichiers XML.
  • Si vous frappez quelque chose et créez import Android.R dans votre activité, supprimez-le.
  • Exécuter Projet -> Nettoyer. Cela supprimera et régénérera R et BuildConfig.
  • Assurez-vous que Projet -> Construire automatiquement est coché.
  • Attendez quelques secondes pour que les erreurs disparaissent.
  • Si cela ne fonctionne pas, supprimez tout ce qui se trouve dans le dossier/gen /
  • Si cela ne fonctionne toujours pas, essayez cliquez avec le bouton droit de la souris sur votre projet -> Android Outils -> Réparer les propriétés du projet.

Que faire si R ne se régénère pas

Cela se produit généralement lorsque vous avez un fichier XML cassé.

  • Vérifiez les erreurs dans vos fichiers XML, principalement dans le dossier/res /
  • Les emplacements communs sont/layout/et/values ​​/, en particulier si vous en avez modifié un récemment
  • Vérifiez AndroidManifest.xml, je constate que souvent je change une chaîne et j'oublie de changer le nom de la chaîne à partir de AndroidManifest.xml.
  • Si vous ne trouvez pas le problème. clic droit/gen/-> Restaurer à partir de l'historique local ... -> cocher R.Java -> cliquer sur Restaurer. Cela ne résout pas le problème, mais effacera les erreurs supplémentaires pour faciliter la détection du problème.

Je sais qu'il y a déjà beaucoup de réponses ici, mais c'est le premier lien sur Google, je suis donc en train de compiler tous les conseils ici et j'espère que cela aidera quelqu'un d'autre pour la première fois :)

30
Muz

J'ai eu un problème similaire où le fichier R.Java n'était pas régénéré après avoir ajouté des icônes et des fichiers de mise en page. J'ai essayé de nettoyer et de reconstruire et les choses ont empiré depuis lors, le fichier R.Java d'origine avait disparu et n'était toujours pas régénéré. Finalement, j'ai compris qu'il devait y avoir des erreurs de compilation pour le compilateur qui génère R.Java et que celles-ci ne sont pas affichées dans la console. Heureusement, j'avais remarqué plus tôt que

  1. c'est une erreur si un fichier .xml se réfère à un autre qui est inexistant et
  2. c'est une erreur d'avoir des lettres majuscules dans vos noms de fichiers (pourquoi est-ce interdit, j'AIME les cas de chameaux).

Quoi qu'il en soit, après avoir renommé mes icônes et mes fichiers .xml en minuscules, puis réparé toutes les références contenues dans les fichiers .xml, voilà, R.Java a été régénéré. Juste à temps pour me sentir bien quand je me suis arrêté pour le déjeuner :-)

14
John Klippenstein

Pour générer à nouveau le fichier R:

  1. Modifier quelque chose dans layout-> activity_main.xml
  2. Sauvegarder le fichier
  3. Projet-> Nettoyer ...

Supprimez simplement le fichier R situé dans le répertoire gen, puis essayez Projet-> Nettoyer. Ensuite, construisez à nouveau votre application.

8

Vous pouvez également cliquer avec le bouton droit sur la project -> Android Tools -> Fix Project Properties. Cela devrait entraîner la régénération de la classe R.Java.

7
Erich Douglass

Mon problème était dans le fichier manifeste. J'ai supprimé les icônes de lanceur et je n'ai pas référencé les nouvelles sur Manifest :)

4
InsaurraldeAP

Afin de régénérer la classe R., vous devrez essayer plusieurs techniques.

  • Supprimez toutes les importations R de vos Java: import R.Android
  • Assurez-vous d'ouvrir le panneau "Problèmes" en allant dans Fenêtre-> Afficher la vue-> Problèmes.
  • Si vous rencontrez des erreurs dans vos ressources XML, vous devrez les corriger. Dans mon cas, j'ai dû modifier mes attributs d'identifiant pour inclure le signe "+" comme suit: Android:id="@+id/grp_txt"
  • Maintenant, passez à Projet-> Nettoyer
  • Enfin faire Projet-> Fermer, Projet-> Ouvrir

Le signe "+" indique un nouvel identifiant de ressource et force l'outil aapt à créer un nouvel entier de ressource dans la classe R.Java.

4
Temperage

Je rouvre Eclipse, édite l'un de mes fichiers xml, puis découvre que ma classe d'activité faisait référence à Android.R au lieu de mon paquet "R" :-)

4
Charles

Si vous avez accidentellement supprimé votre R dans Eclipse par "project clean" (ne le faites pas), cliquez avec le bouton droit sur votre fichier projet -> Restaurer à partir de l’historique local ...

recréez votre R

Mon cas:

  • Un xml cassé a causé un bug dans R. (à cause de ä, ö, ü, lettres dans id)
  • projet propre supprimé mon R.

Ce que j'ai fait:

  • recréé R de l'histoire locale
  • vérifié les importations R incorrectes dans mes classes (comme l'importation Android.R) et les a supprimées
  • corrigé ce fichier xml et sauvegardé son contenu dans un fichier txt externe
  • supprimé le XML complètement de mon projet.
  • couru mon projet une fois
  • remettez ce xml fixe à sa place

et...

  • a fait un gros câlin à ma copine sans raison après avoir paniqué comme un Hulk.
2
Corona

Mon problème était des erreurs dans mes fichiers XML. Les erreurs ne sont pas toujours automatiquement détectées dans Android Common XML Editor ou Android Common Manifest Editor, par conséquent, utilisez plutôt l'éditeur de texte habituel. Par exemple, du charabia aléatoire d'un fichier .Java avait été inséré dans mes fichiers manifest et strings.xml.

Cliquez avec le bouton droit sur n’importe quel fichier XML (probablement dans le dossier/res ou dans le fichier AndroidManifest.xml), puis cliquez sur "Ouvrir avec", puis sélectionnez "Éditeur de texte". Assurez-vous que tout a l'air bien, puis enregistrez. Veillez également à activer "Construire automatiquement" pour votre projet. J'avais supprimé mon fichier R.Java et celui-ci a été reconstruit à partir de zéro. Inutile de le restaurer à partir de l'historique local.

2
jgonagle

Si vous utilisez Intellij IDEA vous pouvez cliquer sur Construire - Reconstruire le projet

2
Georgy Gobozov

Essayez d’ajouter un nouveau "fichier XML Android" au dossier /res/layout, Par exemple. Cela pourrait amener le plug-in à régénérer la classe R.

1
Richard Szalay

Si quelqu'un d'autre trouve ce fil lors de la recherche sur Google, comme je l'ai fait:

J'ai eu ce qui semblait être le même problème pendant un moment, et après quelques recherches, j'ai remarqué que le fichier R.Java était correctement construit, mais qu'il était ignoré pour seulement n de mes fichiers source. Le problème pour ce fichier particulier était que Eclipse avait "utilement" ajouté la ligne suivante en haut:

import Android.R;

Cela cache efficacement le projet R. Retirez-le et tout ira bien à nouveau ...

1
Jonas

J'ai eu le même problème - "R" manquant. Et aucun des conseils donnés ici n'a aidé. Heureusement, j'ai trouvé la raison - d'une manière ou d'une autre, Eclipse a perdu la cible Project-Properties-target. C'était non réglé. Je ne sais pas jusqu'à présent ce qui l'avait fait, mais le remettre à zéro m'a aidé. Donc, attention - R manquant peut signifier la cible manquante, aussi!

1
Gangnus

Vous pouvez éventuellement accéder aux propriétés du projet et sélectionner l’option Android), puis définir la cible du projet. Une fois que vous avez appliqué l’API cible sélectionnée pour ce projet, il générera automatiquement R.Java.

1
subnesh

J'ai essayé toutes les solutions ci-dessus. Mais malheureusement, cela n'a pas résolu mon problème. Mon R.Java avait disparu dès que j'ai collé une nouvelle image dans mon dossier pouvant être dessiné. Après avoir lu les réponses à cette question, j'ai essayé de supprimer l'icône que j'ai précédemment collée (pendant que l'option Construire automatiquement est activée) et tout allait bien après. J'espère que cela aidera quelqu'un!

1
Alanagh

Vous pouvez simplement modifier n’importe quel fichier xml dans le dossier/res et même ajouter un espace et le sauvegarder, il sera régénéré.

1
Cytown

Vous pouvez utiliser "Restaurer à partir de l'historique local" d'Eclipse pour restaurer votre ancien fichier R s'il a été supprimé. Après cela, vous verrez peut-être ce qui empêche Eclipse de créer vos fichiers (j'ai vu d'autres erreurs qu'auparavant qui ont vraiment aidé à résoudre le problème).

1
user1201626

J'ai eu ce problème et j'ai juste cliqué avec le bouton droit sur le paquet de mon projet et Build Project. Instantanément, la classe R est apparue dans le paquet gen.

1
AlexisM

Généralement, un problème avec un fichier de mise en page non valide. Ouvrez la vue "Problèmes" et recherchez les erreurs dans les fichiers de présentation XML. Corrigez-les et la classe R sera recréée.

Dans mon cas, il n'y a pas eu de véritable erreur. La vue du problème a montré une erreur dans une mise en page XML. L'éditeur a également montré l'erreur XML. Il suffit de reformater le xml en utilisant le formateur automatique avec 'ctrl-f' 'fixe' l'erreur xml 'erreur' et la classe R a été recréée.

1
schwarz

Pour moi, il s'agissait d'une ressource de valeur String non définie… après l'avoir ajoutée manuellement à Strings.xml, la classe R a été régénérée automatiquement!

0
richey

Ce problème se produit normalement lors de l'importation à partir d'un projet existant. Essayez de corriger toutes les erreurs de tous les fichiers . Xml du dossier res, ainsi que du fichier manifeste. Les erreurs sont probablement affichées dans le paramètre "match_parent", remplacez-le par "fill_parent". Lorsque toutes les erreurs sont claires, R.Java apparaîtra.

S'il n'y a pas d'erreur sur les fichiers .xml. Essayez de modifier n’importe quel fichier XML (par exemple, supprimez une lettre et saisissez-la de nouveau), puis enregistrez le fichier, ce qui entraînera la génération de R.Java.

0
laph

Vous pouvez simplement supprimer le fichier R.Java de votre projet et il se régénérera en supposant que la génération soit automatiquement activée. Si vous n'avez pas activé automatiquement la construction, simplement, allez à projet-> Construire tout

0
Steve

J'ai un problème que le findViewById(R.id.edit_text) mais retourne un TextView pas un EditText. Je pense que le problème est que la classe R.id a un mauvais numéro d'identification, alors, je nettoie le projet, puis tout fonctionne bien.

0
Simon