Nach dem Upgrade von Xcode 11.1 auf Xcode 11.2 stürzt meine App ab:
*** Beenden der App aufgrund der nicht erfassten Ausnahme 'NSInvalidUnarchiveOperationException', Grund: 'Klasse mit dem Namen _UITextLayoutView konnte nicht instanziiert werden, da keine Klasse mit dem Namen _UITextLayoutView gefunden wurde. Die Klasse muss im Quellcode definiert oder aus einer Bibliothek verknüpft sein (stellen Sie sicher, dass die Klasse Teil des richtigen Ziels ist). '
Warum passiert dies? Wie kann ich diesen Absturz verhindern?
Antworten:
Glückwunsch
Die neue Version von Xcode (11.2.1) ist ab sofort verfügbar. Dies ist der beste Weg, um dieses Problem zu beheben.
Problemumgehungen
@ Mojtaba Hosseini Die Lösung, die ich vorgeschlagen habe, war die Hilfe und die Teilnahme meiner Seite an meine Entwicklerkollegen über StackOverflow. Sie, ich und der Rest des Entwicklers hier wissen bereits, dass dieses Problem behoben sein wird, wenn die neue Version von Apple angekündigt wird.
Aber neben allem
Die oben genannte Lösung wurde von Apple Review definitiv akzeptiert, da überhaupt keine private API beteiligt ist. Dieser Ansatz ist dem Erstellen von Eigenschaften wie sehr ähnlich
Oder
Wenn Sie also eine Eigenschaft erstellen, verwenden Sie APPLE Private Components direkt und modulieren sie je nach Ihren Anforderungen oder Anforderungen neu.
Das einfache Beispiel sind AMFNetworking-Klassen
Ich hoffe, ich bin mit der Behauptung fertig
Die folgende Antwort war nur eine Hilfe von meiner Seite, damit Entwickler die Entwicklung fortsetzen können, da Sie ursprünglich vorgeschlagen haben, Xcode zurückzusetzen. Es war eine schlechte Praxis, 8 GB Xcode erneut herunterzuladen, da wir alle wissen, dass die neue Version von Xcode bald veröffentlicht wird.
Während es in Xcode 11.2.1 behoben ist, habe ich eine Lösung für Xcode 11.2, mit der Sie diesen Absturz beseitigen können:
LÖSUNG
Gehen Sie zur Build-Einstellungssuche nach "DEAD_CODE_STRIPPING" und setzen Sie sie auf NO
Dann
UITextViewWorkaround.h
UITextViewWorkaround.m
Kompiliere den Code und du wirst eine laufende App haben :)
quelle
Update: Behoben! 🎉🎊
Die einzige Lösung ist das Update
Dieser Fehler wird festgelegt in Xcode 11.2.1. Sie können es also hier herunterladen und verwenden.
Xcode 11.2 wird von Apple am 5. November 2019 nicht mehr unterstützt
Wenn Sie jemals versuchen, Ihre mit Xcode 11.2 erstellte App an den AppStore zu senden, werden Sie abgelehnt:
App Store Connect Operation Warnung
Daher sind alle mit dem Xcode 11.2 durchgeführten Problemumgehungen nutzlos
Es ist ein Fehler für Xcode 11.2 und in Xcode 11.2.1 behoben.
Lösung (en)
Rollback zur vorherigen Xcode Release - Version von:Rollback ist keine Option mehr und App Store wird jeden Build mit Xcode ablehnen unter 11.2.1 einen Blick auf dieseBeachten Sie, dass Sie Safari zum Herunterladen verwenden sollten und sich zuerst beim Apple-Entwicklerportal anmelden müssen .
Alle anderen Xcode-Versionen und andere Ressourcen (einschließlich Release- und Beta-Versionen) finden Sie hier unter https://developer.apple.com/download/moreDie Problemumgehung
Dies ist eine sehr harte, aber funktionierende Problemumgehung. Ersetzen Sie alle
UITextView
s in Storyboards und Xibs durch die reine Codeversion .Beachten Sie, dass dieser Fehler von Apple gefunden und behoben wurde
Ebenfalls früher wurde der Fehler von Apple Staff Edford bestätigt
Für diejenigen mit iOS 13.2, die Xcode 11.1 nicht mehr verwenden können:
Für diejenigen mit Storyboard:
UITextView
UITextView
Objekten zuFür diejenigen, die mit Methoden-Swizzling vertraut sind (Objekt und dynamisches Verhalten)
Gehen Sie zur @aftab muhammed khan Antwort für Objective-C und @MikRo Antwort für Swift angepasste VersionTu es einfach nicht mehr:
Selbst wenn diese beiden letzten Problemumgehungen keine private Apple-API verwenden , werden sie im AppStore abgelehnt, da Apple keine Builds mit Xcode-Versionen unter 11.2.1 akzeptiert !
Und noch einmal:
Xcode 11.2 wird von Apple am 5. November 2019 nicht mehr unterstützt
quelle
CMD + Shift + K
Das Problem wurde in Xcode 11.2.1 behoben.
EDIT: Wie das Update jetzt freigegeben ist, können Sie auf diese Xcode - Version und schalten sollen Kommentar aus dieser Problemumgehung. Wie Mojtaba Hosseini in seiner Antwort erwähnte:
Für die Zeit bis zur Veröffentlichung des Fixes durch Apple war dies eine gute Lösung, um die Entwicklung und das Testen fortzusetzen.
Für Xcode 11.2 habe ich basierend auf der Idee von Aftab Muhammed Khan und mit Hilfe von John Nimis gerade den folgenden Code getestet.
Keine Änderung in den Storyboard-Dateien notwendig!
Ich habe meine AppDelegate.swift-Datei bearbeitet und diese Klasse hinzugefügt
und innerhalb des Delegatenaufrufs für "didFinishLaunchingWithOptions" die Problemumgehung aufrufen
quelle
Ich habe Khans Obj-C-Lösung an Swift angepasst :
Nennen Sie es am Ende von
didFinishLaunchingWithOptions
inAppDelegate
.Danke @Aftab!
quelle
didFinishLaunchingWithOptions
Eine schnellere Lösung:
Fügen Sie diesen Code irgendwo hinzu und ersetzen Sie dann alle Storyboard-Instanzen in
FixedTextView
.Hinweis: Sie verlieren alle in den Storyboards erstellten Attribute. Dies kann schwerwiegende Folgen haben (z. B. Einstellung der Delegierten, Größe usw.).
quelle
Aktualisierte Lösung: Update auf Xcode 11.2.1 . Es funktioniert auf iOS 11, 12 oder 13 Geräten für mich.
Weitere Informationen finden Sie in der Apple-Dokumentation. Dieses Update behebt ein kritisches Problem, das dazu führen kann, dass Apps mit UITextView abstürzen.
Alte Lösung: Das Herunterladen von Xcode 11.1 von https://developer.apple.com/download/more/ Das Zurückschalten von 11.2 auf 11.1 hat den Absturz behoben.
Auch für mich, selbst mit Xcode 11.2, als ich mein iPhone auf 13.2 aktualisierte, wurde der Absturz behoben.
quelle
11.2.1 GV-Saatgut behebt dieses Problem
(und es kann verwendet werden, um im App Store zu veröffentlichen)
Gehen Sie zu https://developer.apple.com/download/ . Laden Sie Xcode 11.2.1 GM-Saatgut herunter
Versionshinweise bestätigen, dass dieser Fehler behoben ist:
quelle
Sie können die letzte Beta-Version von Xcode (11.2.1 GM) von der Apple-Entwickler-Website herunterladen.
Hier der direkte Link
quelle
Verbesserung der @ garafajon-Antwort. Bei mir funktioniert es in den meisten Fällen.
quelle
Als "schnelle" Lösung können Sie die
UITextView
direkt aus dem Code und nicht über IB hinzufügen . Zumindest hat es bei mir funktioniert. Aus meiner Sicht ist es jedoch besser, auf den vorherigen Xcode zurückzusetzen / auf den neuen zu warten.quelle
Es ist ein Fehler mit Xcode 11.2. Unterklassige Textansichten stürzen auf allen Geräten ab, auf denen das neu eingestellte iOS-Build (13.2) nicht installiert ist. Sie sollten mit diesem Build wahrscheinlich kein Release erstellen.
Du kannst jetzt:
quelle
Ich habe eine erfolgreiche Problemumgehung verwendet, aber es war schmerzhaft. Dies ist der Prozess, dem ich gefolgt bin:
TextView
. In meinem Fall:id
(in meinem Fall:id="782-j1-88c"
)Dadurch wurde das Problem für mich behoben, ohne dass die gewünschte Funktionalität verloren ging. Zum Glück hatte ich nur einen
UITextView
zu ersetzen. Andernfalls wird dies unhaltbar.quelle
Ich hatte das gleiche Problem, dass ich gerade meinen Xcode 11.2 auf 11.2.1 aktualisiert habe. Es hat gut funktioniert.
Nach dem Upgrade habe ich das gleiche auf iOs 13 und iOS 12 getestet und es hat gut funktioniert.
quelle
1. Problem:
Es gibt ein Problem mit Xcode 11.2, bei dem Storyboards mit UITextView dazu führen, dass die App unter Betriebssystemversionen vor iOS 13.2 abstürzt, wenn sie mit Xcode 11.2 kompiliert wird.
Überprüfen Sie diese Apple-Dokumentation .
2. Lösung:
Die einzige Lösung besteht darin, Ihren Xcode auf 11.2.1 oder 11.3 zu aktualisieren .
Xcode 11.2.1 wurde speziell veröffentlicht, um dieses Absturzproblem zu beheben.
Überprüfen Sie diese Apple-Dokumentation.
3. Vorschlag:
Ich würde Ihnen empfehlen, die neueste Version von Xcode 11.3 zu verwenden, da dies die Entwicklung von Apps für iOS 13.3 unterstützt und es auch viele neue Funktionen gibt. Überprüfen Sie diese Apple-Dokumentation .
quelle
Dieses Problem wurde in Xcode Version 11.2.1 behoben und in den Versionshinweisen aufgeführt:
quelle