Android: échec de la conversion de @ drawable / picture en drawable

112

Dans mon dossier pouvant être dessiné, j'ai quelques images et elles font toutes référence à la perfection, mais lorsque j'essaie d'ajouter d'autres images avec exactement la même taille dans le même dossier, et que j'essaie de le référencer, une erreur "Échec de la conversion @ drawable / image dans un drawable " . J'ai essayé la même image avec un nom différent et cela continue de me donner cette erreur. Je l'ai également essayé dans une mise en page XML différente et la même chose. De plus, le nom de l'image a été "jack", "abc", "question_mark" comme vous pouvez le voir, il y a strictement dans les règles des caractères que vous pouvez utiliser, et le message d'erreur continue à apparaître. Tout conseil serait excellent sur la façon de résoudre le problème, merci.

Échec de la conversion de @ drawable / picture en dessinable

Jack Trowbridge
la source
2
Tous triés pour une raison étrange, tout à coup après quelques clics de plus, cela fonctionne! mon conseil si vous rencontrez ce problème est simplement de redémarrer eclipse et de vous assurer que tout est référencé et nommé correctement.
Jack Trowbridge
2
Parfois, la simple reconstruction du projet à partir de zéro permet de se débarrasser de ces problèmes du SDK Android. J'ai vu des cas étranges où il utilisait de mauvaises images pour tous mes drawables (pas d'erreur, mais en utilisant l'image à côté de la bonne pour chaque drawable) probablement un problème d'identifiant de référence.
Guillaume
encore -1 Android, +1 Windows
mihai71
4
Pour moi, c'était le caractère "-" au milieu du nom du fichier. Après avoir renommé, tout s'est bien passé dans Android Studio.
martin.p

Réponses:

200

Redémarrez Eclipse (malheureusement) et le problème disparaîtra.

Androliyah
la source
La clôture et la réouverture du projet dans Eclipse ont fonctionné pour moi. Merci Aliyah!
stephen.hanson
J'ai eu ce problème avec drawable-normal-hdpi mais lorsque j'ai mes images en drawable-hdpi - tout va bien.
Yar
@DoctororDrive - votre problème était peut-être légèrement différent. avez-vous toujours l'erreur?
Androliyah
4
assez drôle que ce problème existe à la fois dans eclipse et android studio
Mohammad AbuShady
3
Le projet de fermeture / réouverture n'a pas fonctionné pour moi, mais quitter / redémarrer Android Studio a fonctionné. merci Aliyah.
tmr
143

Vérifiez également si le nom de la ressource contient des caractères illégaux (pour moi, c'était un "-" dans mon-image)

parfumeur
la source
Le propre pack d'icônes d'Android contient des noms de fichiers comme 10-device-access-alarms.png, qu'Eclipse s'étouffe! Merci.
Noumenon
12
Le studio Android s'étouffe également avec ces noms de fichiers. Renommer en traits de soulignement l'a corrigé pour moi.
Cypress Frankenfeld
Pour moi, c'était le caractère spatial ""!
Efreeto
l'espace était le coupable dans mon cas
Saju
c'était "-" pour moi aussi, étrangement studio android n'a pas marqué en rouge cette chose ...
Haseeb Zulfiqar
55

Si le redémarrage d'Eclipse ne résout pas le problème, assurez-vous que le nom de l'image commence par un caractère alphabétique (non numérique).

GregM
la source
4
Merci. Android crée la variable id drawable dans le fichier R avec le nom drawable. Par exemple, si le fichier commence par un nombre, la variable commencera par un nombre et ce n'est pas autorisé en langage Java.
momo
9
Assurez-vous également qu'il ne contient pas de tirets (-); Par exemple, «mic-back» n'est pas valide, «mic_back» est ok
Markus
C'était mon problème. Toutes les icônes du pack sur le site Web d'Android ont des chiffres en tête.
theblang
Doit-il s'agir d'un png? J'essaye d'utiliser des jpg.
IgorGanapolsky
28

file namedoit contenir uniquement abc...xyz 012...789 _ . dans le dossier Resources.

par ex:

my-image.png estFalse !
MyImage.png estFalse !
mon image.png estFalse !
...
...

my-xml.xml estFalse !
MyXml.xml estFalse !
mon xml.xml estFalse !
...
...

Mahdi-bagvand
la source
25

C'est parce que le nom de votre image contient le symbole "-". les seuls caractères autorisés sont [a-zA-Z0-9_.]

Merci

Kiba
la source
1
Les lettres majuscules ne sont pas valides. Si vous les utilisez, Android Studio donnera cette erreur: Erreur: L'exécution a échoué pour la tâche ': app: mergeDebugResources'. > Erreur: nom de fichier invalide: ne doit contenir que des lettres minuscules et des chiffres ([a-z0-9_.])
LightMan
5

J'ai le même problème sur Android Studio. Pas besoin de redémarrer l'IDE, il suffit de fermer et de rouvrir le projet et cela résoudra le problème. (Assurez-vous que les src sont correctement saisis).

Yen NQ
la source
La reconstruction du projet le fera également.
Mike
J'ai fait File -> Invalidate Caches / Restart ..., qui a également fonctionné (et est probablement excessif).
SMBiggs
3

Dans Android Studio, le nom de votre fichier de ressources (images) ne peut pas commencer par NUMERICet il ne peut contenir aucun BIGcaractère. Pour résoudre votre problème, faites comme Aliyah l'a dit. Redémarrez simplement votre IDE. Cela a aussi résolu mon problème.

Sabri Meviş
la source
2

Simplifiez le nom de votre fichier, il semble que tout caractère spécial dans le nom du fichier le fasse hocher. par exemple, modifiez "my-main-header.png" en "header1.png" je ne sais pas pourquoi, mais cela fonctionne

Raymond
la source
2
En effet, les noms de fichiers de ressources sont convertis en identificateurs de ressources dans R.javaet -ne constituent pas un caractère valide pour les identificateurs.
laalto
2

Pour Android Studio, j'ai eu ce même problème. Cela a été causé par l'exécution de Linux, ce qui signifie que les fichiers ne recevaient pas automatiquement une extension. En ajoutant manuellement .png à la fin des noms de fichiers, il pourrait reconnaître le type de fichier et se charger en conséquence.

Le studio Android peut créer une crise si vous essayez de refactoriser le changement de nom dans le projet, car Android essaiera de régénérer R immédiatement. Je ne sais pas exactement ce qui cause l'erreur car elle pointe vers une ligne de code apparemment aléatoire, ce qui dans mon cas était un commentaire.

Solution à cela: supprimez du dessinable, renommez en dehors du projet et relancez-les.

G_V
la source
1

Cela peut être encore plus trivial que ce que suggèrent les autres affiches: si vous avez plusieurs projets, assurez-vous de ne pas créer le fichier de mise en page XML dans le mauvais projet.

Après la création, le fichier s'ouvrira automatiquement, cela peut donc passer inaperçu et vous supposez qu'il se trouve dans le bon projet. De toute évidence, toute référence à des objets dessinables ou à d'autres ressources sera invalide.

Et oui, je suis si stupide. Je fermerai tous les projets inutilisés à partir de maintenant :)

user1883611
la source
1

Je pense avoir trouvé un moyen de le faire fonctionner sans redémarrer Eclipse, ou sans fermer le projet (cela a fonctionné pour moi):

  • renommer le nom du fichier image sous res / in Eclipse -> choisissez le fichier et appuyez sur F2 (pour moi, il res / drawable-mdpi / bush-landscape.jpg -> changé en bush.jpg)

  • Construire le projet (il affichera toujours une erreur)

  • changer l'image où vous l'avez utilisé (j'ai changé dans la mise en page graphique. Pour moi, l'endroit était LinearLayout / Background / bush-landscape -> changé "bush-landscape" en "bush")

  • Construire un projet

Alex
la source
1

Mon nom d'image était 21.jpg. Je l'ai renommé abc.jpg et cela a fonctionné. Assurez-vous donc que le nom de votre image ne commence pas par un chiffre. Cependant, toutes les réponses ci-dessus sont également acceptées.

Abhishek Kaushik
la source
1

Si vous avez les bonnes conventions de dénomination, allez simplement dans Fichier -> Invalidate Caches / Restart.

Et appuyez sur Invalidate Caches / Restart.

Cela a aidé dans mon cas.

Amit Upadhyay
la source
0

Dans mon cas, j'avais une image dans différents dossiers (avec le même nom) pour prendre en charge différentes dpi et tailles de périphérique. Toutes les images portaient le même nom sauf l'une d'elles. Il a été mal saisi et une fois que je l'ai renommé comme d'autres noms, cela a résolu mon problème.

Hamid
la source