Gewusst wie: Debuggen eine Xamarin.iOS app auf einem physischen iOS-Gerät
Entschuldige mich im Voraus für diese lange Frage, aber ich habe verschwendet 3 Tagen erfolglos versuchen, eine Xamarin.iOS-Entwicklungsumgebung, die es mir erlaubt zu Debuggen, die auf einem physischen Gerät (kein iPhone simulator) und ich bin an einem Verlust für das, was zu versuchen nächsten.
Ich glaube, mein setup ist ziemlich standard Xamarin-Konfiguration:
- Windows-10-PC mit Visual Studio 2015 und Xamarin v4.2.0.703
- HTC-Telefon mit USB-Anschluss an den PC für Android Debuggen (funktioniert einwandfrei)
- MacBook mit OS X 10.11 mit Xamarin Studio v6.1.1 und Xcode v8.0
- iPhone oder iPad über USB an den Mac angeschlossenen iOS-debugging
Ich begann durch die Schaffung einer Xamarin-Lösung in Visual Studio, in dem ich zunächst entwickelt und debugged, auf Android.
Fortschritt zu iOS-debugging habe ich dann den Mac mit Xcode und Xamarin Studio, aktiviert es für remote login, und erstellt eine dummy-Xcode Projekt mit dem gleichen bundle-identifier als meine Xamarin.iOS-app. Ich habe auch den Versuch gemacht bei den eher komplizierten Prozess der Erstellung einer Signatur-identity-und provisioning-Profil für die app und der Download /Installation auf dem Mac. Dieser Prozess ist so unintuitiv (und das visuelle feedback in Xcode ist so arm), dass ich bin nicht sicher, dass ich es getan haben richtig. Allerdings bin ich in der Lage zu führen Sie die dummy-Xcode-Projekt auf dem iPhone, so dass ich davon ausgehen muss es sein, OK?
Auf dem Windows-PC, die Xamarin > iOS Optionen Bereich innerhalb von Visual Studio-Einstellungen bestätigt, dass Visual Studio ist am Mac angeschlossen und das angeschlossene iPhone ist auch aufgeführt als Kandidat Zielgerät, so scheint es, dass alles eingerichtet ist, wird für on-device-debugging.
Wenn ich versuche zu Debuggen Sie die app auf dem iPhone-simulator von Visual Studio, funktioniert es einwandfrei. Allerdings Debuggen auf die körperliche iPhone schlägt mit der folgenden sinnlosen Nachricht:
Xamarin.Messaging.Exceptions.MonotouchException: error MT1006: Could not install the
application '/Users/Tim/Library/Caches/Xamarin/mtbs/builds/Test.iOS/c4f40041b6c58fc579a727bccfc18614/bin/iPhoneSimulator/Debug/TestiOS.app'
on the device 'Tim’s iPhone': AMDeviceSecureInstallApplicationBundle returned: 0xe8008001.
Als Vergleich, ich habe auch versucht zu Debuggen direkt auf dem Mac mithilfe von Xamarin Studio. Wieder, der iPhone-simulator funktioniert OK, aber es ist unmöglich, auch starten eine debug-Sitzung mit dem physischen Gerät, weil die angeschlossenen iPhone ist nicht aufgelistet als Kandidat Zielgerät für die Debug | iPhone Konfiguration.
Wenn ich öffnen Sie "Projekt-Optionen" und navigieren Sie zu dem iOS Debug Blick kann ich sehen, dass die Plattform im Zusammenhang mit der Debug Konfiguration ist iPhoneSimulator. Ändern Sie es zu iPhone und speichern der Konfiguration es erscheint die Arbeit, aber die änderungen werden nicht gespeichert. Ich denke, dies ist der Grund, warum mein test-Gerät ist nicht aufgeführt, aber ich bin unklar, was ich tun müssen, um zu bekommen, Xamarin Studio die Annahme meiner änderungen.
So, nach all diesen Experimenten, bin ich völlig verloren. Es wäre hilfreich, wenn Sie eine vollständige, robuste A-Z tutorial für dieses setup-Prozess, aber in Ermangelung irgendwelche Vorschläge, was sollte ich als Nächstes versuchen würde sehr geschätzt werden.
UPDATE: Wenn ich den Ad-Hoc - Projekt-Konfiguration (entweder in Visual Studio oder Xamarin Studio) richtig setzt und startet die app auf dem Gerät, aber nicht den debugger. Wenn ich explizit aktivieren Sie Debuggen in der Ad-Hoc-Projekt-Konfiguration, Xamarin Studio, ignoriert es, aber dann von Visual Studio fügt den debugger, aber die Kugel trifft alle Haltepunkte. Hört sich dies Recht? Bietet es irgendwelche Hinweise, was ich ändern muss, um die realen Debug config, um korrekt zu arbeiten?
Danke. Mit Xcode > Fenster > Geräte, die ich habe gerade überprüft, dass es ein provisioning-Profil auf dem iPhone installierten. Ich cross-überprüft die installierten profile in meinem Apple-Konto, und es enthält meine Entwicklung Signatur und Listen 3 Geräte, eins davon ist das iPhone, dass ich versuche zu Debuggen.
Seltsam.... Wir haben einen Haufen Androiden, funktioniert nicht mit der Xamarin-debugger (w/ A. S.), hatte aber nie ein iOS-Problem, wenn Sie bereitgestellt sind. Welche iOS-Versionen werden auf den iDevices (10?)?
iPhone 4 mit iOS 9.3 und iPhone 5 und 6+ mit iOS 10.
InformationsquelleAutor Tim Coulter | 2016-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jemand vor einem ähnlichen problem, die Lösung, die ich schließlich verabschiedete war mit einem 'brute-force' - Ansatz.
Ich begann, indem Sie eine neue Xamarin.- Formulare-Lösung (unter Verwendung der standard-Visual Studio-Vorlage) und entfernen Sie die unerwünschte Plattform-Projekte (UWP und Windows Phone). In diesem anfänglichen Zustand, ich habe überprüft, es war in der Lage zu starten, das Debuggen auf Android-und iOS-Geräte, sowie deren jeweiligen Emulatoren/Simulatoren. Alles richtig geklappt hat, bestätigt, dass mein Mac setup war richtig und auch, um mir die genaue iOS-Projekt-Konfiguration, die erforderlich ist für die Fehlersuche.
Ich an dieser Stelle davon ausgegangen, dass ein problem mit der Konfiguration müssen die Verantwortung für meine früheren Probleme, so dass ich exakt repliziert jedes detail der Arbeit-Konfiguration in meiner ursprünglichen Lösung. Immer noch weigerte Sie sich, debug auf iOS.
Dann fing ich an, zu vermuten, dass eine referenzierte Nuget-Paket wurde das problem verursacht, also habe ich alle referenzierten Pakete aus der original-Implementierung in die neue test-Lösungen. Ich erwartete, diese zu brechen debugging auf iOS, aber das ist es nicht.
Schließlich habe ich gezielt transplantiert werden, die den gesamten Inhalt meiner ursprünglichen Lösung (XAML & code-behind-Dateien, anzeigen, Modelle, Ressourcen, etc) in die zu prüfende Lösung und es weiter zu Debuggen richtig.
So, in Ermangelung einer tragfähigen Diagnose-Verfahren, die ich effektiv gelöst wird das problem durch eine Wiederherstellung meine Lösung aus dem Boden auf. Kein code geändert wurde, meines Wissens, keine Konfiguration-Einstellungen wurden geändert, aber die neue Ausführung ist jetzt zuverlässig debugfähiger in allen Ziel-Umgebungen.
InformationsquelleAutor Tim Coulter