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/
.
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.
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.
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!
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/.
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
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 .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".
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.
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.
fermez tous les fichiers, nettoyez le projet, redémarrez Eclipse.
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.
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;
avec les grandes suggestions dans les réponses précédentes, assurez-vous que votre cible Android est fixé:
- clic droit sur votre projet
- Choisir Des Propriétés
- choisissez Android dans le menu de gauche
- cochez une case à côté de l'objectif de construction du projet approprié.
- 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.
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
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\._]
.
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.
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é.
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.
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.
vous pourriez avoir besoin de mettre à jour les outils SDK. Relancez Android SDK Manager et installez un nouvel élément: Android SDK Build-tools.
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.
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.
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.
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
.
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.
il suffit d'aller à Android TOP menu list. cliquez sur Build Menu, sous "Build" cliquez sur Rebuild Project .
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.
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.
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.
Supprimer main.out.xml
. Je ne sais pas encore à quoi sert ce fichier, mais son élimination a réglé le problème.
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.