web-dev-qa-db-fra.com

Icônes d'application non incluses dans la construction à partir de Xcode

Je ne parviens pas à voir iOS AppIcon lors de l'installation de la dernière version bêta 6 de Xcode.

J'ai inclus les tailles d'icônes requises, y compris 1024x1024. 

27
Sahil Kapoor

Tu n'es pas seul. 

Dans mon projet, j'ai constaté qu'une ressource AppIcon antérieure qui fonctionnait correctement ne générait plus le rendu d'une icône d'application. Une gamme d'expérimentation a trouvé ce qui suit:

  • Une ressource AppIcon copiée à partir d'un autre projet dans lequel AppIcon fonctionnait a abouti à ce que AppIcon fonctionne dans ce projet, ce qui laisse supposer qu'il y avait un problème avec la ressource AppIcon d'origine spécifique qui ne fonctionnait pas.
  • La copie des fichiers image de l'actif AppIcon inutilisé entraînait également l'échec de l'actif.
  • La création d'une nouvelle ressource AppIcon et l'insertion des images d'icône d'origine de l'application ont également conduit à une icône d'application vierge. 

Combinés ensemble, les points avancés à ce stade suggéraient peut-être que quelque chose n'allait pas avec les fichiers image eux-mêmes. J'ai donc essayé différentes étapes pour résoudre ce problème:

  • Ré-exportation de toutes les tailles d'icônes avec mon application de prétraitement habituelle Prepo. Assuré que mon image source ne contenait pas de transparence. L'insertion de ces images d'icônes recréées a toujours généré une icône d'application vide. 
  • La recréation de toutes les tailles d'icônes avec un processus différent, via Sketch, et l'insertion de ces images d'icônes dans la même ressource AppIcon ont permis à l'icône de l'application de fonctionner.
  • La création d'une nouvelle ressource AppIcon et l'insertion des images créées par Sketch ont permis à l'icône de l'application de continuer à fonctionner.

Tout ce qui précède suggère qu'il existe quelque chose dans Xcode 9 qui refuse ou n'utilise pas les images d'icônes d'application qui fonctionnaient auparavant, et que certains processus permettant de créer des icônes d'application qui étaient auparavant très bien produisent des images que Xcode 9 ne peut pas utiliser. Peut-être qu'il y a quelque chose dans la spécification png qui est un png valide, mais pas une icône d'application acceptable pour Xcode 9. La pensée la plus évidente est que les icônes d'application avec transparence pourraient être rejetées, mais je ne crois pas que les images d'icônes que j'utilisais soient contenues la transparence et j'ai essayé d'éliminer cela dans mes tests ci-dessus.


Une cause complètement distincte rapportée pour certains utilisateurs est liée à l'intégration de CocoaPods. Voir la discussion avec le correctif temporaire éventuel ici et une demande pull créée pour Cocoapods qui aborde théoriquement ce problème. Je dis théoriquement des adresses parce que j'ai essayé d'implémenter ces deux solutions, et aucune d'elles n'a résolu le problème du projet où je l'ai rencontré.

25
Duncan Babbage

Par souci de clarté, assurez-vous que le profil de couleur est défini sur: sRGB IEC61966-2.1. Mes icônes n’avaient aucun profil de couleur avant que je tombe par hasard sur ce problème.

_ {Je suis sûr que d'autres profils de couleurs doivent fonctionner, mais je n'ai pas fait les tests pour en être sûr.} _

Cela peut être fait en aperçu par:

  1. Outils → Attribuer un profil

 Assign Profile1

  1. Sélectionnez sRGB IEC61966-2.1

 Assign Profile2

Lorsque vous faites un Get Info sur les icônes, il devrait maintenant indiquer le profil de couleur correct.

 Example of working / non working Get Info on two images

18
Damo

J'ai eu le même problème avec mes icônes d'application. Ils ont affiché sur certains appareils, mais pas sur d'autres. J'ai approfondi le problème et constaté que toutes mes icônes n'avaient pas été aplaties et que toutes leur espace couleur était incorrect (Adobe RVB). J'ai aplati toutes les icônes et converti en espace de couleur SRGB, puis remplacé les icônes existantes. Toutes les icônes montrent parfaitement maintenant. 

13
grwilde

Après avoir essayé diverses solutions telles que "Association du profil de couleur (sRGB IEC61966-2.1) aux icônes" et "Solution CocoaPods" indiquée ci-dessus, ou "Modification du nom de la source d'icône d'application en un nom d'actif différent dans le paramètre de projet ", J'ai trouvé une solution très basique comme suit:

  1. Effacer votre projet.
  2. Effacer les données dérivées dans (~/Library/Developer/Xcode/DerivedData/)
  3. Allez dans "Projet -> Phase de construction"
  4. Recherchez "Copier les ressources de l'ensemble et faites-le glisser en tant que dernier élément de la liste".
  5. Désinstallez l’application si elle existe déjà et exécutez le projet.

Trouvez une capture d'écran pour une meilleure compréhension.

Avant ( https://ibb.co/bwoGhb )

Après ( https://ibb.co/jfrrFw )

Remarque: - Vous pouvez vérifier ce qui crée un problème pour app-icon dans votre projet en modifiant simplement la position de "Copier les ressources du paquet" dans le sens ascendant.

12
Nikunj Joshi

Une autre solution simple découverte une fois:

J'avais le même problème avec XCode 9.0, un projet qui fonctionnait parfaitement sous XCode 8 et iOS 10 perd soudainement ses icônes (uniquement sur les iPad) lorsque j'ai mis à niveau la solution.

Arraché mes cheveux, fait le truc sRGB, fait le truc de la transparence.

Il se trouve que j'avais toujours l'entrée vide suivante dans mon fichier info.plist de cibles

CFBundleIcons ~ ipad

Il y a longtemps, j'avais décidé de spécifier cela dans les paramètres de construction cibles.

La solution a consisté à supprimer simplement cette entrée du fichier info.plist (cliqué sur le petit bouton "-" utile. Reconstruit, testé et tout était à nouveau parfait.

8
John Guy

Edit: Ceci doit être déclenché au milieu de gym, ce que je ne sais pas faire. Exécuter le correctif dès que l'archive apparaît dans le dossier fera l'affaire. Si quelqu'un peut aider à améliorer cela, s'il vous plaît faites le moi savoir!

J'ai rencontré ce problème avec Fastlane et j'ai écrit un script Shell que je lance en tant que voie pour résoudre le problème. Le correctif lui-même est le code de l'utilisateur stubyte dans ce thread

Voici mon script pour archive_fix.sh:

#!/bin/bash

# navigate to latest archive created
cd ~/Library/Developer/Xcode/Archives
foo=$(ls -t | head -n1) && cd $foo
line=$(ls -t | head -n1) && cd "$line"

 # bug fix
find Products/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323

Dans mon Fastfile, j'ai exécuté:

sh("./archive_fix.sh")
2
Matthew Barker

J'ai passé toute une journée à perdre du temps là-dessus. J'ai vérifié mes fichiers png pour assurer l'absence de transparence, pour assurer les paramètres RVB corrects, j'ai également changé le podfile comme indiqué ici . Rien n'a fonctionné. La mise à niveau vers Xcode 9/iOS 11 semblait interrompre/modifier quelque chose, car les icônes m'apparaissaient auparavant pour la même application. 

Quoi qu’il en soit, ce qui m’a réglé le problème, c’était de changer le nom de l’icône de l’application iOS dans Assets.xcassets (Default = AppIcon) et de modifier également le 'Nom du jeu d’icônes de l’application du catalogue d’actifs' dans les paramètres de construction pour s’aligner sur le nouveau. prénom. 

Étrangement, une fois que cela a fonctionné, j'ai mis à jour toutes mes images dans AppIcon dans Assets.xcassets et j'ai à nouveau une image vierge! Répétez les étapes ci-dessus et le problème résolu pour la deuxième fois.

2
ack

Dans mon cas, aucune de ces solutions n'a fonctionné. 

Mes icônes ne sont pas affichées car elles étaient PAS EN TAILLES CORRECT . Une fois que je les redimensionnai correctement, mon problème était résolu.

2
zeeawan

TL; DR: créer une phase de construction "Copier les ressources du paquet"

Après une journée et demie d’essai à peu près toutes les solutions sur ce sujet, entre autres, j’ai trouvé une solution très différente qui fonctionnait pour moi. En examinant le package d'application dans mon dossier de construction, j'ai remarqué que les fichiers png d'App Icon n'étaient pas copiés dans celui-ci. J'ai créé une application vierge à partir de rien, j'ai ajouté une icône d'application et, dans cette application vierge, elle a copié le fichier d'icône. Alors qu'est-ce qui donne? 

L'application vide comportait une phase de construction "Copier les ressources de l'ensemble" qui a copié le package Assets.xcassets. La mienne non. J'ai donc créé un, ajouté mes Images.xcassets et, dès que possible, mon archive a été validée. NB Je suis à peu près sûr que je n'avais jamais eu cette phase de construction auparavant, mais j'ai pu soumettre une construction il y a à peine un mois ...

2
Chris Marstall

Problème:

1. L'icône de l'application n'apparaît pas sur iOS 11 ou Xcode 9.

2. Icône de l'application visible sur iPhone mais pas sur iPad.

La solution qui a fonctionné pour moi:

Le problème semble être lié au processus de construction de Xcode 9 et iOS 11. Auparavant, Apple utilisait une extension ~ iPad pour différencier les actifs pour iPhone et iPad.

Le fichier info.plist contient un dictionnaire avec la clé «CFBundleIcons ~ ipad» qui ne contient aucun élément (tel qu’il apparaît dans Xcode 9), ce qui a pour effet que le paquet récupère les images du fichier info.plist au lieu d’images.xcassets. l'icône de l'application sur Xcode 9 n'apparaît pas.

Le fichier _ {Suppression de cette clé de .plist} _ fonctionnait pour ma construction, alors que les autres ne fonctionnaient pas.

 Deleting "CFBundleIcons~ipad" key from .plist

2
Aakash Aggarwal

Ce problème est dû à CocoaPods pour iOS 11. Après quelques recherches, j'ai trouvé une solution:

 post_install do |installer|
     copy_pods_resources_path = "Pods/Target Support Files/Pods-XXX/Pods-XXX-resources.sh"
     string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
     assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
     --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
     text = File.read(copy_pods_resources_path)
     new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
     File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents } 
end

Ajoutez juste au-dessus de podfile et dans le terminal, exécutez pod install . Mais ce code ci-dessus a une limitation. Il peut y avoir des conditions telles que nous avons plusieurs pod alors nous devons courir en boucle.

 post_install do |installer|
     installer.aggregate_targets.each do |target|
         copy_pods_resources_path = "Pods/Target Support Files/Pods-Fixr/Pods-Fixr-resources.sh"

         string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
         assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
         --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
         text = File.read(copy_pods_resources_path)
         new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
         File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
     end

fin

Cela fonctionne bien quand il y a plusieurs fichiers. 

1
Bhanu

Réponse de gales_vasile: https://forums.developer.Apple.com/thread/86290

Travaillé pour moi.

Cela devrait être un bug dans CocoaPods, comme discuté ici https://github.com/CocoaPods/CocoaPods/issues/7003 J'ai eu le même problème mais je l'ai corrigé en suivant les étapes suivantes:

1) Ajoutez ce code à Podfile:

post_install do |installer|
    copy_pods_resources_path = "Pods/Target Support Files/Pods-IconTest/Pods-IconTest-resources.sh"
    string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
    assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
    text = File.read(copy_pods_resources_path)
    new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
    File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end

2) Modifiez le chemin copy_pods_resources_path pour votre application et exécutez «pod update» .Cela devrait résoudre votre problème!

1
LucasKarlsson

Après avoir essayé plusieurs de ces solutions, voici ce qui a résolu le problème:

1). Supprimer tous les dossiers .xcassets de l'un de mes dossiers Pod

Supprimez ensuite toutes les références à ces fichiers dans:

2) Pods> Fichiers de support cible> Pods-YourApp-resources.sh

Enfin, sous Mon application> Phases de construction> Ressources de pod de copie

3) Supprimez toutes les références aux mêmes chemins .xcassets

Par la suite, juste pour être sûr, j'ai créé un dossier de construction Clean, Clean, puis supprimé les données dérivées. Xcode fermé et rouvert, le tour est joué!

J'espère que cela aide quelqu'un, il m'a fallu environ une demi-journée pour résoudre ce problème ...

0
Asleepace

Un moyen facile de changer la couleur de profil est d’utiliser Automator . Créer un travail pour chaque fichier et dossier

Screenshot Automator

Et enregistrez-le . Vous pourrez alors marquer tous les fichiers d'icônes de votre actif et choisir le travail. Tous les profils pour les icônes seront créés :)

0
Marc

Dans mon cas, l'icône de l'application a commencé à s'afficher correctement dans le Finder après avoir changé

<key>CFBundleIconFile</key>
<string>AppIcon</string>

dans

<key>CFBundleIconFile</key>
<string>AppIcon.icns</string>

dans Info.plist. Ma version de XCode est 8.3.3

0
Michal Fapso

Dans mon cas, l’un des pods contenait .xcasset. Le supprimer a résolu le problème.

0
Chuck Boris

Après quelques jours de recherche, j’ai compris le problème, mais c’est le xcode 10 beta qui est à l’origine du problème qui a entraîné la disparition de l’icône de l’application sur ios 11. 

J'ai rétrogradé à xcode 9.4.1 et maintenant l'icône apparaît également sur ios 11.

0
Umberto

Si vous avez une taille d'icône incorrecte dans votre jeu d'icônes, l'icône de l'application ne s'affichera pas @ iOS11. Après plusieurs jours de recherche, j'ai trouvé cette entrée dans mon journal de construction:

Affichage de tous les messages, filtrage pour "icône". Attention: ApplicationIcons.appiconset/Icon-40@2x.png est 80x80 mais devrait être 60x60.

Alors que ce message était présent, l’icône de mon application ne s’affichait pas toujours (c’est-à-dire que le logo par défaut de l’application iOS serait visible). J'ai corrigé le fichier d'icône du problème (en l'échangeant avec l'image de taille correcte) et maintenant mon icône d'application s'affiche toujours. Pour une raison quelconque, la modification du "Nom du jeu d'icônes de l'application du catalogue d'actifs" a corrigé le problème en un seul événement. Les versions ultérieures de l'application entraîneraient l'affichage de l'icône par défaut. 

0
ack

1- Ajoutez ce code à Podfile:

post_install do |installer|
    copy_pods_resources_path = "Pods/Target Support Files/Pods-IconTest/Pods-IconTest-resources.sh"
    string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
    assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
    text = File.read(copy_pods_resources_path)
    new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
    File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end

2- installation de pod

remarque: assurez-vous de remplacer ceci: Pods-IconTest/Pods-IconTest-resources.sh

comme IconTest est le nom de votre application

ou vous pouvez obtenir ce chemin en recherchant .sh: (check image)

 enter image description here

0
Bassant Ashraf