Je viens de télécharger et d'installer le nouveau SDK Android. Je voulais créer une application simple pour la tester.
L'assistant 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 pas être résolu
en ligne
setContentView(R.layout.main);
Pourquoi?
PS: J'ai un fichier XML nommé main.xml
sous res/layout/
.
android
eclipse
compiler-errors
android-resources
android-sdk-tools
Maurizio Pozzobon
la source
la source
Réponses:
Après avoir également repéré ce problème, j'ai trouvé cette note dans la documentation Android:
http://source.android.com/source/using-eclipse.html
En parcourant les exemples de didacticiels Android, j'utilisais souvent la commande Ctrl+ Shift+ Opour "Organiser les importations" et générer les instructions d'importation manquantes. Parfois, cela générerait l'instruction d'importation incorrecte qui masquerait la
R.java
classe qui est automatiquement générée lors de la génération.la source
Chaque fois que j'avais un problème avec R non généré, ou même disparu, cela était dû à un problème dans le fichier de disposition XML qui empêchait la création de l'application.
la source
android:icon="@drawable/XXX"
déclaration sur une<item>
ressource dans un menu, mais il n'y avait pas de gribouillis rouge signalant que la ressource drawable XXX n'était pas trouvée. Dans d'autres cas, a"@drawable/YYY"
été signalé lorsque YYY n'a pas été trouvé, mais pas dans ce cas. Pour certaines raisons.Chaque fois que vous obtenez
puis recherchez le
/res
répertoire et il doit y avoir un fichier qui contient une erreur et qui empêche la création de l'application. Par exemple, il peut s'agir d'un fichier de mise en page ou il peut être dû à une ressource manquante, mais vous l'avez déjà défini dans le fichier XML.Si vous avez des images supplémentaires, même inutilisées (!) Ou non référencées (!) Dans un dossier comme res / drawables-mdpi qui ne respectent pas les conventions de dénomination des fichiers (ne peuvent contenir que [a-z0-9_.]), Le La classe R.java pourrait ne pas générer, provoquant la chaîne d'événements tous les autres messages mentionnés. J'espère que cela aide!
la source
Regardez vos importations. Les chances sont que la ligne:
sera là. Si tel est le cas, supprimez-le, afin que votre projet résolve R non pas avec la classe de ressources Android par défaut, mais avec celle générée automatiquement à partir de votre dossier / res /.
la source
Et une autre chose qui peut provoquer ce problème:
J'ai installé le nouvel ADT (v. 22). Il a cessé de créer un
gen
dossier qui comprendR.java
. La solution consistait également à installer de nouveaux outils de création de SDK Android à partir d'Android SDK Manager.Solution trouvée ici
la source
R.java
est un fichier créé par les plugins Android Eclipse lors de la création de votre application.R.java
est créé sous le répertoire "gen". Ce fichier est généré à partir des informations du répertoire "res". Si vous exécutez sélectionnez "Projet" -> "Nettoyer ..." dans le menu Eclipse, il supprimera puis régénérera leR.java
fichier.Le problème «R ne peut pas être résolu» se produit lorsque vous modifiez le nom de votre package dans le
AndroidManifest.xml
fichier. Il utilise le nom de votre package Android pour créer un sous-répertoire sous le répertoire "gen" où il stocke leR.java
fichier.Eclipse peut avoir des problèmes d'exécution propre, car il est difficile de savoir où se trouve le
R.java
fichier lorsque vous avez modifié le nom du package Android. Vous pouvez soit renommer le sous-répertoire sousgen
pour qu'il corresponde à votre nouveau nom de package, soit changer le nom de votre package en l'ancien. Faites le nettoyage, puis changez le nom du package pour le nouveau nom que vous souhaitez. Cela fonctionne mieux si vous empêchez Eclipse d'essayer de générer pendant que vous modifiez le nom du package. Dans le menu "Projet", décochez l'option "Construire automatiquement" et aussi lorsque la boîte de dialogue "Nettoyer ..." demande si elle doit "Démarrer une génération immédiatement" décochez la case pour qu'elle n'essaye pas de construire pendant que vous modifiez le nom du package. Après avoir changé le nom, vous pouvez réactiver "Générer automatiquement".Notez que si le
AndroidManifest.xml
nom de votre package de fichiers ne correspond pas à votre nom de package Java, Eclipse finira par ajouter automatiquement un "import <votre nom de package Android> .R;" ligne dans tous vos.java
fichiers qui ont des références à R. Si vous changez leAndroidManifest.xml
nom de votre package, parfois Eclipse ne met pas à jour toutes ces importations ajoutées. Si cela se produit, utilisez le refactoring Eclipse ( ALT+ Shift+ R) pour changer l'instruction d'importation dans l'un de vos fichiers Java en votre nouveauAndroidManifest.xml
nom de package. Il est préférable de le faire tant que vous avez désactivé la "Construction automatique".la source
import com.example.main.package.name.R;
Ce que Will a dit était juste
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 autorisations pour être exécutés, donc c'était comme n'existait pas pour Eclipse, donc il n'a pas construit le
R.java
fichier.La modification de l'autorisation et la sélection de "Générer automatiquement" ont donc résolu le problème.
la source
cd $ANDROID_SDK_ROOT/build-tools/<version>
. Ensuite ,chmod a+x
sur les fichiers commeaapt
,aidl
,dexdump
,dx
, etc.ANDROID_SDK_ROOT
devraient être fixées dans votre environnement, et il pointera vers votre installation du SDK. Par exemple/opt/android-sdk
,. Il est important de définir les deuxANDROID_SDK_ROOT
etANDROID_NDK_ROOT
parce que les outils Android les utilisent en interne. Voir le répertoire NDK recommandé? sur la liste des utilisateurs NDK.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 fichier R.java (ce serait gen / eu.mauriziopz.gps / R.java dans Eclipse avec le SDK 1.5), je recommanderais de fermer et de rouvrir votre projet ou d'aller dans Projet> Tout construire (et en sélectionnant "Construire automatiquement" alors que là-bas comme recommandé par Josef). Si cela ne fonctionne pas, essayez de créer un nouveau projet, si le problème est recréé, postez à nouveau ici et nous irons plus en détail.
la source
Fermez tous les fichiers, nettoyez le projet, redémarrez Eclipse.
la source
Cela vaut la peine de s'enregistrer
AndroidManifest.xml
. L'attributpackage
a la valeur correcte.C'est:
Après avoir modifié cela, le
R.java
sera régénéré.la source
Cette erreur peut également être provoquée par l'ajout d'une activité à un espace de noms différent de l'espace de noms racine de votre package.
Par exemple, si
com.example.myapp
est l'espace de noms racine de votre package, vous pouvez ensuite ajouter une activité à l'com.example.myapp.activities
espace de noms.Cela produira l'erreur «R ne peut pas être résolu».
Pour corriger l'importation, le R dans l'espace de noms par défaut de votre activité doit être:
la source
En plus des excellentes suggestions des réponses précédentes, assurez-vous que votre cible Android est définie:
Edit: Un an plus tard, j'ai trouvé une autre cause. J'avais une image .jpg dans mon dossier dessinable avec le même nom qu'une image .png. Référencer cette image dans mon code doit avoir confondu le programme et il a donné l'erreur "R ne peut pas être résolu".
la source
Assurez-vous d'avoir installé le gestionnaire sdk du formulaire de l'outil de construction Android
cliquez sur le bouton droit de la souris sur propriétés-> Java BuildPath sélectionnez Bibliothèque et ajoutez android-support.jar en suivant ces étapes.
Allez dans Projet-> Propriétés-> Chemin de génération Java puis sélectionnez l'onglet Ordre et exportation. Définissez la bibliothèque .jar de support android cochée et placez-la en haut de la liste. Et nettoyer et reconstruire .. Cela fonctionne pour la plupart des cas
la source
Je viens d'avoir ce problème pour la millionième fois et j'ai réalisé ce qui en était la cause: j'ai créé un fichier XML avec des lettres majuscules dans le nom. Tous vos noms de fichiers XML
/res
doivent correspondre[a-z0-9\\._]
.la source
Solution la plus simple - Parfois, il vous suffit d'enregistrer le fichier XML sur lequel vous travailliez pour que le générateur automatique démarre.
Enregistrez le fichier (par exemple main.xml) puis supprimez le fichier R.java et voyez si le R.java régénéré résout le problème de résolution R.
la source
Vérifiez les noms des fichiers XML. Assurez-vous qu'ils sont tous en minuscules.
Assurez-vous également que tous les noms de ressource d'image sont également tous en MAJUSCULE. J'avais une lettre majuscule au nom de mon fichier jpg, et cela a provoqué l'erreur R non résolue dans tout mon projet.
la source
R
est une classe générée. Si vous utilisez les outils de développement Android (ADT), il est généré à chaque génération du projet. Vous avez peut-être désactivé l'option "Construire automatiquement".la source
Cette erreur est apparue sur mon installation Linux Mint x64. Il s'est avéré que le résultat était un échec dans le
ADB
binaire, car leia32-libs
paquet n'était pas installé. Courir simplementapt-get install ia32-libs
et de relancer Eclipse a corrigé l'erreur.Si votre distribution x64 n'a pas de librairies ia32, vous devrez aller sur Multiarch.
Vérifiez # 4 et # 5 sur ce post: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883
J'espère que cela aide quelqu'un.
la source
Vous devrez peut-être mettre à jour / installer les outils du SDK. Relancez Android SDK Manager à nouveau et installez un nouvel élément: Android SDK Build-tools.one par une suppression, corrigez celui qui fonctionne pour vous.
la source
Vous devrez peut-être mettre à jour les outils du SDK. Relancez Android SDK Manager et installez un nouvel élément: Android SDK Build-tools.
la source
J'ai aussi eu ce problème. Il s'est avéré que j'avais supprimé par inadvertance la ressource de chaîne "app_name" du
strings.xml
fichier, ce qui provoquait une erreur silencieuse. Une fois que je l'ai ajouté, la classe R a été générée avec succès et tout était de nouveau opérationnel.la source
Essayez de mettre votre nouveau nom de fichier de mise en page XML en minuscules. Par exemple, utilisez
my_file.xml
au lieu demyFile.xml
.la source
Une autre raison
R.java
peut ne pas être générée automatiquement 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 n'en veut pas. Lorsque j'ai supprimé ces répertoires,
R.java
j'ai recommencé la génération automatique pour moi.la source
Vérifiez d'abord s'il y a une erreur dans une disposition xml ou non, si vous la résolvez d'abord.
Sinon, supprimez la dépendance junit du projet et reconstruisez le projet.
la source
Cela est souvent dû au 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 le niveau 7 de l'API.
Vous pouvez voir de quoi je parle lorsque vous parcourez le SDK que vous avez téléchargé et installé. Accédez à l'emplacement 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" répertorié sous forme de dossier, et si vous ouvrez cela, il y a unsource.properties
fichier qui, lorsqu'il est 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 nombre que vous recherchez lorsque vous remplissez le paramètre MinSDK.
Il s'agit probablement de l'une des erreurs les plus courantes qui entraîne la
R.java
non-création du fichier sous Projet> gen> nom_paquet> R.java.la source
Retirez
main.out.xml
. Je suis nouveau dans ce domaine et je ne sais pas encore à quoi sert ce fichier, mais le supprimer a résolu le problème.la source
Accédez simplement à la liste du menu supérieur d'Android. cliquez sur Build Menu, sous Build, cliquez sur Rebuild Project .
la source
J'ai eu les exemples d'Android 8 et essayais d'utiliser Android 7 SDK. Lorsque j'ai fermé le projet et rouvert le dossier de l'application et choisi d'utiliser Android 8 SDK, il a pu trouver le fichier R. J'espère que cela t'aides.
la source
Dans mon cas, j'ai eu une erreur dans mon
AndroidManifest.xml
. D'autres ont dit que vos fichiers XML devaient être exempts d'erreurs, mais je ne cherchais que dans le dossier res /. Trouvez et corrigez autant d'erreurs que possible et le problème pourrait bien se résoudre.la source
Au cas où quelqu'un serait intéressé (je pourrais peut-être vous sauver la vie ici), j'ai eu l'erreur,
R.xml
ne peut pas être résolu, légèrement différent sur un projet GLS. Hmmmm. Après avoir regardéR.java
, j'ai trouvé une classe générée automatiquement,XML.java
, (je pense) n'était pas là.Solution? Il fallait un nouveau dossier dans
res
:res\xml
et un fichier appelédefault_values.xml
là-dedans. Alors tout allait bien.Au cas où vous n'auriez pas ce fichier, c'est:
la source