Développement pour Android dans Eclipse: R.java Non régénérant

j'ai découvert que mon R.java n'est jamais mis à jour, donc il ne contient pas d'informations sur mes nouvelles ressources, donc j'ai décidé de l'effacer et j'ai pensé Qu'Eclipse en produirait une nouvelle. Mais ce n'est pas arrivé, et je n'ai pas R.java tout de suite. Comment puis-je régénérer?

J'utilise Windows 7.

de l'un des commentaires: "faire projet - > propre est ce qui a causé le problème pour moi. Nettoyage suppressions R.java...et pour quelque raison que ce soit, le plugin ne régénère pas le fichier."

297
demandé sur Peter Mortensen 2010-05-03 13:23:33

30 réponses

ce site suggère:

si vous exécutez un nettoyage sur le projet, il devrait régénérer tous les fichiers Java générés, à savoir R.

...et...

dans Eclipse, sous le menu projet, est une option construire automatiquement. Cela vous aiderait à construire le R.java les modifications sont faire. propre... option est également là dans le cadre du projet.

ce site suggère une autre solution.

174
répondu aioobe 2015-10-24 12:30:07

j'ai trouvé ça en train de m'arriver avec une maquette cassée et tout explose. Relax, c'est comme cette vieille erreur quand tu as appris à programmer C où tu oublies un point-virgule Et il génère une centaine d'erreurs. Beaucoup paniquent, appuient sur tous les boutons, et aggravent les choses.

Solution

  • assurez-vous que les liens R. ne sont pas rompus. corriger toutes les erreurs dans vos fichiers XML . Si tout ce qui est dans les ADK est cassé, R ne se régénérera pas.
  • si vous avez frappé quelque chose et créé import android.R dans votre activité, supprimez-le .
  • Exécuter Projet -> Clean . Cela supprimera et régénérera R et BuildConfig.
  • assurez-vous que projet - > construire automatiquement est coché. Si ce n'est pas le cas, construisez-le manuellement via Menu -> Project -> Build Project .
  • Attendre quelques secondes pour les erreurs de disparaître.
  • si cela ne fonctionne pas, supprimez tout ce qui se trouve dans le répertoire/ gen /
  • si cela ne fonctionne toujours pas, essayez clic droit sur votre projet- > Outils Android - > correction des propriétés du projet .
  • Vérifier *.propriétés fichiers (dans le dossier racine de votre dossier app) et assurez-vous que les liens y sont pas cassés.
  • faites un clic droit sur votre Projet > Propriétés > Android . Regardez les sections "objectif de construction du projet" et "Bibliothèque" sur le côté droit de la page. Votre cible de construction devrait correspondre à la cible dans votre AndroidManifest.XML. Donc si c'est réglé sur la cible 17 dans AndroidManifest, assurez-vous que le nom de la cible est Android 4.2. Si votre bibliothèque a un X sous la référence, supprimez et rajoutez la bibliothèque jusqu'à ce qu'il y ait une touche verte. Cela peut se produire si vous avez déménagé quelques fichiers et dossiers.

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

cela se produit généralement quand vous avez un fichier XML cassé.

  • vérifiez les erreurs dans vos fichiers XML, principalement dans le dossier /res/ 1519210920"
  • lieux communs sont /layout/ et /values/ , surtout si vous avez changé l'un d'eux récemment
  • Vérifier AndroidManifest.xml . Je trouve que souvent je change une chaîne de caractères et oublie de changer le nom de la chaîne de caractères de AndroidManifest.xml .
  • vérifier que Android SDK Build-tools est installé. Window -> Android SDK Manager -> Outils -> version du SDK Android-outils
  • assurez-vous que lorsque vous mettez à jour le Android SDK Tools , vous mettez également à jour le Android SDK Platform-tools et Android ADK Build-tools . La construction échoue silencieusement si elles ne correspondent pas.
  • si vous Je ne trouve pas le numéro, clic droit /gen/ -> restaurer de l'histoire locale... - >TIC R.java - > cliquez sur Restaurer . Même si cela ne résout pas le problème, cela effacera les erreurs supplémentaires pour rendre le problème plus facile à trouver.
300
répondu Muz 2015-10-31 20:00:23

j'ai eu le même problème. Quand j'ai vérifié, j'ai découvert que le nom de la ressource XML sous layout n'avait pas la convention de nommage correcte. Il y avait quelques lettres majuscules. Donc je l'ai renommé pour faire toutes les lettres minuscules et la magie a fonctionné.

40
répondu Amit Kumar 2015-10-24 12:46:26

L'une des raisons pour lesquelles R.class peut disparaître soudainement est quand il ya des erreurs dans vos fichiers XML. Par exemple, lorsque vous ajoutez un fichier XML avec des lettres majuscules dans le nom comme myCoolLayout.le xml, ce qui n'est pas autorisé. Ou lorsque vous avez des références qui ne pointent pas vers des fichiers existants, etc.

28
répondu Pawel 2015-10-24 12:30:51

dans Eclipse, utilisez simplement Project -- > clean pour nettoyer le projet. Le R.java va être automatiquement (re) création.

Si pour quelque raison que dosn pas: assurez-vous votre mise en page.les fichiers xml ne contiennent pas d'erreurs. Eclipse semble être un peu buggé ici: parfois, il ne marque pas les erreurs dans le XML ni dans l'Explorateur de paquets. Dans un tel cas: regardez la "console" ou voir " problèmes "après avoir utilisé"nettoyer". Toutes les erreurs doivent être affichées. Corriger et refaire un propre.

NOTE: il N'est pas nécessaire de corriger les erreurs que vous obtenez à cause d'un fichier r manquant! il suffit de corriger les fichiers XML et les autres erreurs de projet et d'utiliser clean!

17
répondu masi 2015-10-25 12:04:13

Quick fix:

le nom du paquet dans le manifeste doit être le même que celui dans le dossier /src , le paquet de dossiers /gen sera automatiquement reproduit.

observation détaillée:

observer le nom du paquet dans le dossier /gen . Dans mon cas, c'était différent de celui du dossier /src .

le colis mentionné dans le manifeste était celui du dossier /gen .

j'ai essayé d'ajouter un paquet avec le nom du dossier /src au dossier /gen Voir Aussi ce qui se serait passé, mais cela n'a pas résolu le problème. J'ai procédé ensuite à supprimer le nom du paquet qui n'était pas le même que le nom du paquet du dossier /src . Ce paquet avec le nom qui ne correspondait pas au dossier /src a été recréé dès que je l'ai enlevé.

depuis la référence du paquet dans le manifeste correspondait à celle qui était recréée de façon insensée et qui ne correspondait pas avec le paquet dans le dossier /src , ce qui a incité à renommer package = "oldPackage" avec le package = "srcFolderPackage" .

10
répondu androidWorkerTheEighth 2015-10-24 12:54:02

j'ai eu le même problème, et j'ai finalement trouvé le problème: Dans les cordes.xml, Je n'ai pas gardé la ligne <string name="app_name">program-name</string> qui est présente par défaut lors de la création d'un nouveau projet Android. Je pensais qu'il n'était utilisé que pour le programme HelloWord, qui est le programme original.

Toutefois, le AndroidManifest.xml renvoie à cette valeur, donc:

= > une erreur de compilation;

= > le R.java n'est pas mis à jour;

=> ID ne sont pas reconnus...

9
répondu Glaux 2015-10-24 12:32:55

Android a ajouté dans SDK construire L'outil ADT 22 pour le mécanisme de construction. Vous avez juste besoin de suivre les étapes suivantes.

  1. mise à jour de L'outil SDK Android
  2. mise à Jour Android SDK de la Plate-forme de l'Outil
  3. mise à jour de L'outil de construction SDK Android
  4. ajoutez le chemin de votre outil de compilation à la variable chemin. (chemin jusqu'à---- VOTRE CHEMIN RÉPERTOIRE\android-sdk\build-outils)

Ce sera résoudre le problème.

9
répondu Amol 2015-10-31 20:08:17

si votre R.java n'est pas généré, une des solutions est de supprimer le fichier de mise en page nommé "blabla.hors.XML."

après avoir supprimé ce fichier, essayer de nettoyer le projet à partir du menu projet - > nettoyer .

8
répondu Shashank 2015-10-24 12:35:07

comme une généralisation de la réponse de Glaux, si vous avez n'importe quelle erreurs dans le répertoire res , alors R.java peut ne pas générer - même si vous nettoyer et reconstruire. Résolvez ces erreurs en premier.

par exemple: lorsque vous ajoutez un fichier image de say," myimage-2.jpg", le système considérera cela comme une erreur, puisque les noms de fichiers sont limités à des valeurs alphanumériques. Faites une mise à jour sur votre répertoire 'res' après avoir ajouté des fichiers et regardez la sortie en votre fenêtre de console pour tout avertissement de nom de fichier.

7
répondu Abel 2012-01-16 17:40:25

si votre OS est Ubuntu, je peux fournir une suggestion:

  1. installer ou mettre à niveau ia32-lib:

    sudo apt-get upgrade ia32-libs
    
  2. vérifiez si vous avez la bonne permission sur le dossier aapt:

    cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2
    chmod 777 aapt
    
  3. Démarrer Eclipse:

    sudo eclipse
    
  4. l'Exécution du Projet -> Clean dans Eclipse

6
répondu Nevin Chen 2015-10-31 20:12:51

vous avez 100% une erreur dans un fichier XML , mais la vérification XML ne vous montre pas l'erreur. C'est la raison pour laquelle vous devez vérifier vos fichiers XML en premier!

6
répondu Erdinc Ay 2015-10-31 20:19:00

il est toujours utile de jeter un oeil à L'onglet Problems dans Eclipse. Dans mon cas, je recevais un" android incapable de résoudre la cible 'android-8' " message d'erreur qui a gardé le R.java d'être généré. Ainsi, j'ai corrigé la cible importée à celle que j'utilisais dans le défaut .propriétés fichier, puis j'ai effectué un nettoyage via projets - > propre et voila! R.java est automatiquement généré! Espérons que cela aide!

5
répondu goseib 2012-03-15 17:04:34

projet de nettoyage, fermeture Eclipse, la réouverture et le lancement de mon projet a finalement fait mon R.java pour réapparaître... Espérons que cela aide

4
répondu Filippo Mazza 2011-09-25 10:48:43

assurez-vous de ne pas importer

android.R;

4
répondu Humble Coder 2012-06-25 10:38:30

R.java ne sera jamais généré s'il y a des erreurs dans le dossier res . Par exemple, dans le sous-dossier dessinable il y a deux fichiers qui ont le même nom, un est Icône.png, et l'autre est l'icône.HTML.

vous pouvez voir une erreur dans la fenêtre de log de la console Eclipse qui dit" L'icône entrée de la ressource est déjà définie.". Après la suppression de l'icône.html, vous pouvez nettoyer ou simplement supprimer le dossier gen . Vous trouverez que R.java est créé.

4
répondu Peter Mortensen 2015-10-25 12:16:14

j'ai trouvé que tout fichier qui a lettres majuscules dans le dossier res va créer cette erreur. Cela m'est arrivé avec un fichier PNG que j'ai ajouté et oublié.

4
répondu Peter Mortensen 2015-10-25 12:20:54

après avoir lu de nombreux billets et vidéos sur YouTube, j'ai découvert que chacun de nous avait R.java disparu pour différentes raisons.

Voici comment j'ai corrigé ceci dans Eclipse:

  • créer R.java dans gen dossier manuellement et enregistrer.
  • après cela, allez au projet et cliquez sur "Nettoyer"

le message suivant s'affichera et votre fichier sera être réécrit automatiquement:

R.java a été modifié manuellement! Retour à la version générée!

3
répondu Anup Singh 2012-09-27 16:59:15

pour moi, j'avais relié V7 appcompat deux fois. Quoi qu'il en soit, dans Eclipse, faites un clic droit sur le nom du projet dans Package Explorer ou Navigator, allez dans Propriétés, Android, et décochez les doublons dans la section Bibliothèque. Vous devrez peut-être construire --> nettoyer après.

3
répondu Shanker Kaura 2014-03-26 17:39:25

il n'y a évidemment pas de réponse définitive à cela, mais en voici une autre que je ne vois pas déjà ici:

j'ai eu R.java disparaissent après (de tenter) d'une Équipe de la synchronisation, et il y avait de la résolution de conflits de fichiers dans le projet (c'est à dire, thingy.xml.mine , thingy.xml.r35 , etc.). Les supprimer / résoudre les conflits régénérés R .

2
répondu Ben Mosher 2012-02-01 14:17:31

j'ai eu ce problème. J'ai accidentellement supprimé ce

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

qui a commencé à causer des erreurs de compilation dans tout le projet dans Mes fichiers XML ainsi que mes fichiers Java. Dès que j'ai retapé ce que j'ai supprimé, il a travaillé à nouveau :)

2
répondu Mohamed El-Saka 2012-09-05 00:56:47

OK il est donc clair qu'il peut y avoir beaucoup de causes à ce problème. Si vous êtes sur une machine Linux 64 bits et que vous êtes en train de configurer L'ADT pour la première fois, vous pourriez avoir ce problème là où R ne génère pas automatiquement. Vérifiez l'onglet console et vous pouvez voir une erreur similaire à:

 'No such file or directory' while attempting to get adb version from '/home/patrick/code/android-sdks/platform-tools/adb'

Si c'est le cas, vous devez installer ia32-libs, en utilisant quelque chose comme:

 sudo apt-get install ia32-libs

voir ici pour plus de détails: Android adb n'est pas trouvé

2
répondu Patrick 2017-05-23 12:18:23

j'ai rencontré ce problème plusieurs fois. J'ai constaté que si je n'importais pas le paquet R par le nom de mon application, par exemple, si mon application avait l'exemple du nom du paquet.test puis j'ai trouvé que je devais importer exemple.test.R afin d'accéder à l'une des ressources.

si cela n'a pas été importé alors les ressources que là où obtenir retourné étaient les ressources par défaut avec aucun de mes propres inclus.

Avec cela dit, si vous trouvez que vous ne recevez qu'une liste de ressources par défaut, vérifiez simplement que vous importez application_package_name.R et pas androïde.R.

2
répondu Peter Mortensen 2015-10-25 12:01:22

Mon problème, c'est que appcompat n'était pas dans le même répertoire que mon projet.

j'ai découvert cela lors de la compilation de mon application avec Ant .

2
répondu Martin 2015-10-31 20:17:23

également s'assurer que vous avez la dernière version du plugin ADT, et ouvrir le gestionnaire SDK Android pour mettre à jour tous les outils SDK à la dernière version. Vérifiez les mises à jour dans Eclipse lui-même aussi. Les versions non assorties ont causé le problème pour moi.

1
répondu caw 2013-05-21 22:56:42

mon problème était dans un fichier de menu. Le compilateur ne semble pas vous avertir si des chaînes qui n'existent pas dans strings.xml sont référencées dans les fichiers de menu. Vérifiez si vos item dans votre menu font référence à des chaînes de caractères qui n'existent pas dans votre strings.xml . Habituellement en android:title .

1
répondu Stefan Anca 2014-02-13 12:29:31

pour moi, cette erreur a été causée lorsque j'ai essayé de dupliquer un res/menu existant au lieu d'en créer un avec le wizard .

1
répondu Hakim 2014-07-03 12:21:39

toutes ces réponses ne peuvent pas fonctionner si vous utilisez Maven. La solution pour moi était d'ajouter

<genDirectory>${project.basedir}/gen</genDirectory>

dans la section configuration d'android-maven-plugin.

1
répondu Bevor 2014-07-07 06:30:12

j'ai trouvé une solution pourquoi R.class N'est pas fait par Eclipse après l'avoir fait à nouveau - 2 nettoyer, construire, etc.

Le problème est ici, dans les chaînes.xml:

<string name="hello">Hello World, HelloAutoComplete!</string>

<string name="app_name">HelloAutoComplete</string>

ce sont par défaut créés par Eclipse lorsque vous créez des projets.

vous changez définitivement les cordes.xml pour vos propres besoins. Parfois, vous désactivez la chaîne.xmls ces deux lignes de votre code:

il pose un problème dans L'AndroidManifest.fichier xml:

<application android:icon="@drawable/icon"  android:label="@string/app_name">
<activity android:name=".HelloAutoComplete" android:label="@string/app_name">

donc il ne peut pas communiquer avec les cordes.XML.

1
répondu aarifmkhan 2015-10-24 12:44:36

j'ai changé mon nom de fichier XML de layout et j'ai découvert plus tard que celui du fichier XML (widget provider dans ce cas) se réfère toujours à L'ancien XML de layout qui n'existe pas, et qui a empêché la génération automatique/correction de la classe r.

1
répondu Howard 2015-10-24 12:48:16