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


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.


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)


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).


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 !
...
...


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


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).


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.


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


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.


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 :)


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


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.


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.