Wenn ich meine App mit Xcode 8 GM Seed erstelle und sie auf einem iOS 9.2 unter Gerät ODER Simulator ausführe, kommt es beim Start der App oder einige Sekunden nach dem Start der App zu seltsamen Abstürzen von EXC_BAD_ACCESS. Der Absturz ereignet sich immer an einer anderen Stelle (Hinzufügen einer Unteransicht, der Hauptmethode des [UIImage imageNamed:]
App-Delegaten usw.). Ich bekomme diese Abstürze nicht, wenn ich es unter iOS 9.3+ oder 10 ausführe, und ich bekomme sie nicht, wenn ich mit Xcode 7 baue und unter iOS 9.2 und niedriger ausführe. Hat jemand etwas Ähnliches erlebt? Ist dies ein bekanntes Problem mit Xcode 8?
85
Antworten:
Siehe die akzeptierte Antwort https://forums.developer.apple.com/thread/60919
Mit Preview.app können Sie 16-Bit-Assets als 8-Bit-Assets speichern
quelle
Ich hoffe, dieses Bash-Skript kann Ihnen helfen. Das Eingabeargument ist ein Verzeichnis, das alle xcassets Ihres Projekts enthält. Dieses Skript setzt das sRGB-Profil auf alle PNGs. Es hat mir geholfen:)
quelle
Ich konnte das Problem reproduzieren und es scheint mit Bildern im Asset-Katalog zu tun zu haben. Fehler bei Apple behoben (mit angehängtem Beispielprojekt)
Apple Bug Reporter: 28371396
quelle
bearbeitetes Skript zum Konvertieren von PNG-Dateien in das richtige Format im gesamten Projekt und mit Leerzeichen:
quelle
while IFS= read -d '' -r file; do if [ $(file "$file" | grep -c '16-bit') -eq 1 ]; then sips -m '/System/Library/Colorsync/Profiles/sRGB Profile.icc' "$file"; fi done < <(find . -print0)
die nur 16-Bit-Bild in 8-Bitgleicher Fehler.
Ich bin nicht sicher, ob dies ein Fehler ist, aber hier ist meine Lösung: Stellen Sie sicher, dass Ihre Bildelemente ohne Adobe RGB (1998) -Farbraum sind
in xcode
quelle
Hinzufügen für alle anderen mit einem ähnlichen Problem ...
Die App stürzte unter iOS 9.0 - iOS 9.2 bei scheinbar zufälligen / Storyboard-Übergängen / beim Festlegen eines UIImage (Name ...) ab. Dieser Thread wurde gefunden: ( https://forums.developer.apple.com/thread/61643 )
Wenn Ihre App auf iOS 8.4 abzielt, stürzt sie unter iOS 9.0 - 9.2 in Xcode 8 ab. Dies hat etwas mit xcassets zu tun. Durch Festlegen des Bereitstellungsziels auf 8.2 oder niedriger (ich habe 8.0 verwendet) wurde das Problem für mich behoben. Im Ernst. Der schlimmste Fehler aller Zeiten.
quelle
Legen Sie das iOS-Bereitstellungsziel in Info fest Ihres Projekts und alle Ziele auf denselben Wert fest.
In meinem Fall war mein Projekt auf iOS 9.1 und das Ziel auf iOS 8.0 eingestellt und stürzte auf Simulator mit iOS 8.4 ab
Jetzt funktioniert es perfekt.
PS.: Reinigen Sie das Projekt, bevor Sie es erneut ausführen.
quelle
Obwohl die Frage bereits beantwortet wurde, funktioniert die akzeptierte Lösung für mich nicht, da ich keine 16b / ch-Assets hatte.
Ich habe festgestellt, dass dieses Problem bei Assets aufgetreten ist, die mithilfe eines
lzfse
Algorithmus komprimiert wurden (Informationen zum Extrahieren von Informationen aus Assets.car finden Sie unterassetutil
). Leider erlaubt Xcode IDE Entwicklern nicht, den Komprimierungsalgorithmus zu ändern. Sie können dies jedoch tun, indem Sie Assets manuell kompilieren und das Bereitstellungsziel imactool
Befehl senken .tl; dr;
ipa
Beispielbefehl:
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
quelle