85 votes

Xcode 8 crash sur iOS 9.2 et inférieur

Quand j'ai créer mon application avec Xcode 8 Semences GM et de l'exécuter sur un iOS 9.2 ci-dessous de l'appareil OU de simulateur, j'ai d'étranges EXC_BAD_ACCESS accidents au cours de l'app ou de démarrage, quelques secondes après l'application lancée. Le crash se produit toujours dans un endroit différent (l'ajout d'une sous-vue, [UIImage imageNamed:], délégué d'application de la méthode main, etc). Je ne comprends pas ceux qui se bloque quand je le lance sur iOS 9.3+ ou 10 et je n'ai pas quand je leur construire avec Xcode 7 et de les exécuter sur iOS 9.2 et ci-dessous. Quelqu'un d'autre a l'expérience de quelque chose de semblable? Est-ce un problème connu avec Xcode 8?

55voto

Kostia Dombrovsky Points 452

Voir la accepté de répondre à https://forums.developer.apple.com/thread/60919

Vous pouvez enregistrer les 16 bits de l'actif 8-bit avec l'Aperçu.app

Comment faire pour résoudre les "ERREUR IMT-90682: Invalid Bundle - L'actif catalogue à la Charge utile/XXXXX/Actifs.voiture' ne peut pas contenir de 16 bits ou P3 actifs si l' application prend en charge iOS 8 ou version antérieure."

Avec Xcode 8 GM, cette erreur se produit si vous incluez 16 bits ou P3 actifs dans une application de présentation de ciblage iOS versions plus tôt, puis iOS 9.3. Si votre application exige la couleur de fonctionnalités que vous devez changer votre Cible de Déploiement pour iOS 9.3 ou plus tard. Si votre application ne prend pas exiger de large de couleur de fonctionnalité et que vous souhaitez déployer pour les plus âgés les versions d'iOS alors vous devez remplacer toutes les 16 bits ou P3 actifs avec 8-bit sRGB actifs. Vous pouvez trouver la 16-bits ou P3 actifs en cours d'exécution "assetutil" sur l'actif catalogue nommé dans le message d'erreur de iTunes Connect. Les étapes suivantes décrivent le processus:

  1. Créer un Inspectable .fichier ipa. Dans Xcode Organisateur (Xcode->Fenêtre->Organisateur), sélectionnez une archive à inspecter, cliquez sur "Exporter...", et choisissez "Export pour l'Entreprise ou au Déploiement Ad-Hoc". Cela va créer une copie locale de la .fichier ipa pour votre application.

  2. Le localiser .fichier ipa et de modifier son extension .zip.

  3. Développez le .fichier zip. Ceci va produire une Charge utile dossier contenant votre .app bundle.

  4. Ouvrir un terminal et de changer le répertoire de travail pour le haut niveau de votre .app bundle cd chemin/vers/le / de Charge/de votre.app

  5. Utilisez l'outil de recherche pour localiser les Actifs.voiture de fichiers dans votre .app bundle comme indiqué ci-dessous: trouver . -nom 'Actifs.voiture"

  6. Utiliser le assetutil outil pour trouver toutes les 16 bits ou P3 actifs, dans chacun des Actifs.voiture de votre demande comme indiqué ci-dessous. : sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json

  7. Examiner le résultat /tmp/Actifs.json et de regarder pour tout contenu comprenant des "DisplayGamut": "P3" et de son "Nom". Ce sera être le nom de votre imageset contenant un ou plusieurs de 16 bits ou P3 les actifs.

  8. Remplacer ces actifs avec 8 bits / sRGB actifs, puis de reconstruire votre application.

Mise à jour: Si votre Cible de Déploiement est soit 8.3 ou 8.4, et vous avez une actif catalogue ensuite, vous recevrez ce message d'erreur même, même si vous n'avez pas en fait 16 bits ou P3 actifs. Dans ce cas, vous devrez soit inférieur votre Cible de Déploiement de l'article 8.2, ou le déplacer jusqu'à 9.x.

32voto

J'espère que ce script bash peut vous aider. L'argument d'entrée est un répertoire contenant tous les xcassets de votre projet. Ce script définira le profil sRGB sur tous les pngs. Ça m'a aidé:)

 #!/bin/bash
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "------------------------------"
echo "Processing asset:"
XSAASSETSD="$(find "$DIRECTORY" -name '*.xcassets')"
for xcasset in $XSAASSETSD
do
    echo "---$xcasset"
    IMAGESETS="$(find "$xcasset" -name '*.imageset')"
    for imageset in $IMAGESETS
    do
        echo "------$imageset"
        FILES="$(find "$imageset" -name '*.png')"
        for file in $FILES 
        do
            echo "---------$file"
            sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" $file --out $file
        done
    done
done
echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"
 

16voto

Evtim Georgiev Points 248

J'ai réussi à reproduire le problème et il semble lié aux images dans Asset Catalog. A déposé un bogue avec Apple (avec l'exemple de projet ci-joint)

Apple Bug Reporter: 28371396

13voto

script édité pour convertir les fichiers png au format correct dans le projet entier et avec des espaces:

 #!/bin/bash
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "------------------------------"
echo "Processing asset:"

find "$DIRECTORY" -name '*png' -print0 | while read -d $'\0' file; 
do 
    echo "---------$file"
    sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" "$file" --out "$file"
done

echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"
 

3voto

ping Points 132

même problème.

Je ne sais pas s'il s'agit d'un bogue, mais voici la solution: assurez-vous que vos ressources d'image ne sont pas occupées par l'espace de couleur Adobe RGB (1998).

en xcode

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X