J'ai récemment migré mon application pour prendre en charge iOS7 et, au cours de ce process, mis à jour les icons de mes applications pour utiliser un catalogue d'actifs; ce qui fonctionne très bien dans l'application. Toutefois, dans Organizer et TestFlight, l'icône de mon application est manquante.
La même chose se passe aussi dans TestFlight – ce qui implique qu'il manque quelque chose à mon bundle. Toute aide serait reçue avec gratitude.
Donc, il semble que vous ayez toujours besoin d'avoir l'input des Icon files
dans le plist de l'application qui pointe vers une icône qui est une ressource dans l'application; même si Xcode l'a supprimé lors de ma conversion au catalogue; Voici l'input que j'ai créée manuellement tout en conservant le catalogue d'actifs:
Notez que j'ai testé cela avec différentes icons et que ce paramètre n'a aucune incidence sur les icons que l'application utilise réellement au moment de l'exécution; cette input semble être uniquement utilisée par Organizer et TestFlight, ce qui résout mon problème.
Oui, lorsque vous utilisez le catalogue d'actifs , vous devrez peut-être effectuer les opérations suivantes pour que l'icône de l'application soit liée et fonctionne pour les dissortingbutions / productions Ad-Hoc à afficher dans Organizer , Test flight et éventuellement dans des locations AppStore inconnus.
Après avoir créé le catalogue d'actifs, prenez note du nom des images de lancement et des noms d'icons d'applications répertoriés dans le .xassets
dans Xcode.
Par défaut, cela devrait être
AppIcon
LaunchImage
[Pour voir ce clic sur votre dossier / icône .xassets dans Xcode.] (Ceci peut être changé, donc prenez juste note de cette variable pour plus tard)
Ce qui est créé maintenant chaque construction est les data structures suivantes dans votre file .app:
Pour les icons d'application:
iPhone
AppIcon57x57.png
(iPhone non retina) [ Notez le préfixe du nom de l'icône ] [email protected]
(iPhone rétine) Et le même format pour chacune des autres résolutions d'icons.
iPad
AppIcon72x72~ipad.png
(iPad non retina) AppIcon72x72@2x~ipad.png
(iPad rétine) (Pour iPad c'est un postfix légèrement différent)
Problème principal
Maintenant, j'ai remarqué que dans mon Info.plist
dans Xcode 5.0.1, il a automatiquement tenté et n'a pas réussi à créer une key pour les « Icon files (iOS 5)
» après avoir terminé la création du catalogue d'actifs.
Si cela a réussi à créer une reference / cela peut avoir été corrigé par Apple ou simplement travaillé, alors tout ce que vous avez à faire est de revoir les noms des images pour valider le format indiqué ci-dessus.
Solution finale:
Ajoutez la key suivante à votre .plist
principal .plist
Je vous suggère d'ouvrir votre .plist
principal avec un éditeur de text externe tel que TextWrangler plutôt que dans Xcode pour copyr et coller la key suivante.
<key>CFBundleIcons</key> <dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <ssortingng>AppIcon57x57.png</ssortingng> <ssortingng>[email protected]</ssortingng> <ssortingng>AppIcon72x72~ipad.png</ssortingng> <ssortingng>AppIcon72x72@2x~ipad.png</ssortingng> </array> </dict> </dict>
S'il vous plaît noter que j'ai inclus seulement mes exemples de résolutions, vous devrez les append tous.
Si vous voulez append cette key dans Xcode sans éditeur externe, utilisez ce qui suit:
Icon files (iOS 5)
– Dictionnaire Primary Icon
– Dictionnaire Icon files
– Array Item 0
– Ssortingng = AppIcon57x57.png
Et pour chaque autre icône d'élément / application. Maintenant, lorsque vous archivez enfin votre projet, la dernière charge utile .xcarchive .plist inclura désormais les locations d'icons indiqués ci-dessus à build et à utiliser.
<key>IconPaths</key> <array> <ssortingng>Applications/Example.app/AppIcon57x57.png</ssortingng> <ssortingng>Applications/Example.app/[email protected]</ssortingng> <ssortingng>Applications/Example.app/AppIcon72x72~ipad.png</ssortingng> <ssortingng>Applications/Example.app/AppIcon72x72@2x~ipad.png</ssortingng> </array>
Encore un hiccup possible avec la migration vers le catalogue d'actifs .
Il existe deux façons de définir des icons dans les parameters du projet: CFBundleIconFiles
depuis iOS3 et CFBundleIcons
depuis iOS5. Les plus âgés, en dépit d'être plus âgés, contrairement au sens commun sur la compatibilité vers l'arrière, a toujours la préséance . J'utilisais CFBundleIcons
avant de migrer directement dans Asset Catalog. Et après avoir migré, j'ai supprimé les files originaux pointés par CFBundleIcons
parce que, vous le savez, maintenant j'avais le nouveau catalogue d'actifs shiny, non? Et XCode a fait trois choses:
CFBundleIcons
partir des parameters généraux du projet. Pourquoi en auriez-vous besoin lorsque vous avez déjà opté pour le nouveau catalogue d'actifs, n'est-ce pas? CFBundleIcons
originale d'Info.plist, cependant, en optant pour le catalogue d'actifs, vous dites clairement que vous n'allez pas au-dessous de iOS5 Le résultat est caché, visuellement non modifiable, peut-être obsolète / mauvaise key dans Info.plist
qui a préséance sur ce que le catalogue de biens créé pour vous .
Ouvrez votre Info.plist
manuellement et supprimez CFBundleIcons
, rebuild, reupload, et voilà, l'icône est de return.