Lorsque je construis mon application avec Xcode 8 GM Seed et que je l'exécute sur un simulateur d'appareil iOS <9.2> sous OR, des plantages étranges se produisent EXC_BAD_ACCESS au démarrage de l'application ou quelques secondes après le lancement de l'application. . Le crash se produit toujours à un endroit différent (en ajoutant une sous-vue, [UIImage imageNamed:]
, la méthode principale du délégué de l'application, etc.). Je ne reçois pas ces blocages lorsque je l'exécute sur iOS 9.3+ ou 10 et je ne les reçois pas lorsque je construis avec Xcode 7 et que je m'exécute sur iOS 9.2 et versions ultérieures. Quelqu'un d'autre a-t-il vécu quelque chose de similaire? Est-ce un problème connu avec Xcode 8?
Voir la réponse acceptée https://forums.developer.Apple.com/thread/60919
Vous pouvez enregistrer des actifs 16 bits au format 8 bits avec Preview.app
Comment résoudre "ERREUR ITMS-90682: Ensemble non valide - Le catalogue d'actifs Dans" Payload/XXXXX/Assets.car "ne peut pas contenir d'actifs 16 bits ou P3 si l'application Prend en charge iOS 8 ou une version antérieure. "
Avec Xcode 8 GM, cette erreur se produira si vous incluez 16 bits ou P3 actifs dans une soumission d'application ciblant les versions iOS antérieures, puis iOS 9.3 Si votre application nécessite une fonctionnalité couleur étendue, vous devez modifier votre cible de déploiement sur iOS 9.3 ou version ultérieure. Si votre application ne le fait pas Vous avez besoin d’une large palette de couleurs et vous souhaitez le déployer sur une version plus ancienne Dans les versions iOS, vous devez remplacer tous les actifs 16 bits ou P3 par Actifs sRGB 8 bits. Vous pouvez rechercher des ressources 16 bits ou P3 en exécutant «Assetutil» sur le catalogue d'actifs nommé dans le message d'erreur de iTunes Connect. Les étapes suivantes décrivent le processus:
Créez un fichier .ipa inspectable. Dans l'organiseur Xcode (Xcode-> Fenêtre-> Organiseur), sélectionnez une archive à inspecter, cliquez sur "Exporter ...", puis choisissez "Exporter pour un déploiement en entreprise ou ad-hoc" . Cela créera une copie locale du fichier .ipa pour votre application.
Localisez ce fichier .ipa et changez son extension en .Zip.
Développez le fichier .Zip. Cela produira un dossier Payload contenant votre bundle .app.
Ouvrez un terminal et remplacez le répertoire de travail par le répertoire supérieur de votre dossier de cd .app/par/Payload/your.app.
Utilisez l'outil de recherche pour localiser les fichiers Assets.car dans votre lot .app, comme indiqué ci-dessous: find. -name 'Assets.car'
Utilisez l'outil assetutil pour rechercher des actifs 16 bits ou P3, dans chaque fichier Assets.car de votre application, comme indiqué ci-dessous. :
Sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json
Examinez le fichier /tmp/Assets.json obtenu et recherchez tout contenu contenant «DisplayGamut»: «P3» et son «nom» associé. Cette volonté être le nom de votre jeu d'images contenant un ou plusieurs 16 bits ou P3 les atouts.
Remplacez ces actifs par des actifs 8 bits/sRGB, puis reconstruisez votre application.
Mise à jour: si votre cible de déploiement est définie sur 8.3 ou 8.4 et que vous avez un catalogue d’actifs, vous recevrez alors le même message d’erreur, même si vous ne le faites pas ont effectivement des actifs 16 bits ou P3. Dans ce cas, vous devrez soit baisser votre cible de déploiement vers 8.2, ou déplacez-la vers 9.x.
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 . Cela 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 "------------------------------"
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 joint
Apple Bug Reporter: 28371396
script modifié pour convertir les fichiers png au format correct dans l'ensemble du projet 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 "------------------------------"
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)
Définissez la cible de déploiement iOS inside Info de votre projet et de toutes les cibles sur la même valeur.
Dans mon cas, mon projet était défini sur iOS 9.1 et la cible sur iOS 8.0 et se bloquait sur le simulateur avec iOS 8.4
Maintenant cela fonctionne parfaitement.
PS: Nettoyez le projet avant de relancer.
Bien que la question ait déjà été répondue, la solution acceptée ne fonctionne pas pour moi, car je n'avais aucun actif 16b/ch.
J'ai constaté que ce problème était lié à des ressources compressées à l'aide de l'algorithme lzfse
(vous pouvez trouver des informations sur la compression extrayant les informations de Assets.car à l'aide de assetutil
). Malheureusement, Xcode IDE n'autorise pas les développeurs à modifier l'algorithme de compression. Toutefois, vous pouvez le faire en compilant les actifs manuellement et en abaissant la cible de déploiement dans la commande actool
.
tl; dr;
ipa
Exemple de commande:
xcrun actool --output-format human-readable-text --notices --warnings --minimum-deployment-target 8.0 --output-partial-info-plist info_partial.plist --app-icon AppIcon --launch-image LaunchImage --enable-on-demand-resources YES --sticker-pack-identifier-prefix {bundle_id}.sticker-pack --target-device iphone --target-device ipad --platform iphoneos --product-type com.Apple.product-type.application --compile #{path_to_directory_containing_Assets_car} Assets/Assets.xcassets