iOS9 Share Extension kann nicht auf Xcode debuggen

8

Wenn ich die Freigabeerweiterung von Xcode für das reale Gerät erstelle, stoppt Xcode willkürlich das Debugging. Aber wenn ich für den Simulator starte, tritt das Problem nicht auf.

Umwelt
Xcode 7.1.1
iOS 9.1

Details
Wenn ich die Freigabeerweiterung erstelle, zeigt Xcode "Fertig läuft MobileSafari.app auf dem iPhone", aber Safari läuft nicht. Und, der Quadratstoppknopf ist willkürlich grau. Also starte ich Safari selbst und wähle meine Erweiterung und Post. Der Debug-Bereich zeigt nichts an. Außerdem wird die URL-Anforderung nicht an den Rails-Server gesendet.

Dies ist das Bild, wenn ich die Freigabeerweiterung für das reale Gerät erstelle.

Ich weiß nicht, warum das reale Gerät die Freigabeerweiterung bei Xcode nicht starten kann.
Wenn jemand die Antwort zu diesem Problem kennt, bitte sag es mir.

    
penlight 23.11.2015, 12:05
quelle

2 Antworten

6

Normalerweise können Sie eine Freigabeerweiterung debuggen, indem Sie zu Debug - & gt; Fügen Sie den Prozess oder die PID an und geben Sie den Namen Ihrer Freigabeerweiterung ein. Von dort aus können Sie die Freigabeerweiterung auf Ihrem Gerät oder Simulator öffnen, und der Xcode-Debugger sollte Haltepunkte korrekt anhängen und anschlagen. Ich habe jedoch festgestellt, dass Protokollmeldungen nicht angezeigt werden, und auch keine Werte für Variablen in der Debuggeransicht aufgefüllt werden.

So habe ich das Debuggen richtig funktionieren lassen. Führen Sie das Freigabeerweiterungsschema aus. Wenn Sie gefragt werden, welche App ausgeführt werden soll, wählen Sie "Fotos" (da dies die App ist, mit der Ihre Erweiterung funktioniert). Die Fotos App wird dann auf Ihrem Gerät gestartet und Sie können Ihre Erweiterung verwenden. Der Debugger in Xcode sollte dann wie erwartet funktionieren.

    
GPRyan 12.09.2016 05:35
quelle
0

Ich bin auch auf dieses Problem gestoßen, obwohl ich leider die genaue Lösung nicht kenne, vielleicht kann ich einige Informationen anbieten, die hilfreich sein könnten.

Ich (wie Sie, nach Ihrem Screenshot) nutzte Cocoapods, und Cocoapods kopierte Ressourcen aus den Pods in das Bundle der App-Erweiterung, nachdem es Code signiert hatte. Wenn der Speicher dient, stört dies die Code-Signierung und verhindert so, dass die App unter dem Debugger ausgeführt wird.

Ich glaube, dass eines der Symptome darin bestand, dass Protokolle in der Konsole des Mac (oder der Konsole des Geräts, die sich nicht mehr erinnern können) etwas über "Sprengen auf das Gerät mit der alten Methode von Skool [sic]" sagten.

Sie können bestätigen, dass dies der Fall ist, indem Sie Cocoapods aus Ihrem Projekt entfernen oder Pods, die Ressourcen benötigen, die nach dem Kompilieren kopiert werden sollen. Ich glaube, die Lösung bestand darin, dem Erweiterungsprojekt eine Art spezielle Build-Phase hinzuzufügen, um die Bundle-Ressourcen zu kopieren und standardmäßig alle Cocoapods zu deaktivieren.

Als vorübergehende Lösung glaube ich, dass Sie beim Löschen Ihrer App auf dem Gerät den Debugger einmal anhängen können, und zwar in dem Lauf, in dem die App zum ersten Mal installiert wird. Sie können auch versuchen, abgeleitete Daten für Ihr Projekt zu löschen.

    
Ben Pious 27.11.2015 21:13
quelle

Tags und Links