Verwenden von mtouch zum Bündeln von Xamarin.iOS-Apps

iPhone-Anwendungen werden als Anwendungspakete zur Verfügung gestellt. Hierbei handelt es sich um Verzeichnisse mit der Erweiterung .app, die Ihren Code, Daten, Konfigurationsdateien sowie ein Manifest enthalten, welche vom iPhone verwendet werden, um Informationen zu Ihrer Anwendung zu sammeln.

Der Prozess zum Konvertieren einer ausführbaren .NET-Datei in eine Anwendung wird in der Regel vom Befehl mtouch gesteuert. Dabei handelt es sich um ein Tool, dass viele der zum Aktivieren der Anwendung in einem Bündel erforderlichen Schritte enthält. Dieses Tool wird auch verwendet, um Ihre Anwendung im Simulator zu starten und die Software auf einem echten iPhone oder iPod Touch bereitzustellen.

Ausführliche Anweisungen

Sehen Sie sich die Seite mtouch(1) des Leitfadens mit allen möglichen Einsatzbereichen des mtouch-Tools an.

Installation

Auf einem Mac ist mtouch mit Xamarin.iOS gebündelt. Es kann im folgenden Verzeichnis gefunden werden:

/Library/Frameworks/Xamarin.iOS-Framework/Versions/Current/bin

Um mtouch sinnvoll nutzen zu können, müssen Sie dessen übergeordnetes Verzeichnis Ihrer PATH-Umgebungsvariable hinzufügen.

Um dies beispielsweise in Bash tun zu können, muss dem Ende Ihrer ~/.bash_profile-Datei folgende Zeile hinzugefügt werden:

export PATH=$PATH:/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin

Warnung

Um mtouch zu verwenden, sollten Sie sich nicht darauf verlassen, dass der symbolische Link /Developer/MonoTouch/usr/bin, der auf /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin verweist, vorhanden ist. Diese symbolische Verknüpfung ist nur vorhanden, um die Kompatibilität mit älteren MonoTouch-Releases zu gewährleisten, die nicht unter /Library/Frameworks/... installiert wurden. Die Verknüpfung wird in zukünftigen Releases eventuell nicht mehr vorhanden sein.

Gebäude

Es gibt drei Möglichkeiten, Ihren Code mit dem mtouch-Befehl zu kompilieren:

  • Kompilieren für Simulatortests
  • Kompilieren für die Gerätebereitstellung
  • Bereitstellen Ihrer ausführbaren Datei auf dem Gerät

Entwickeln für den Simulator

Wenn Sie beginnen, ist das gebräuchlichste Szenario das Testen der Anwendung im Simulator, Sie werden also mtouch -sim verwenden, um den Code in ein Simulatorpaket zu kompilieren. Das sieht folgendermaßen aus:

$ mtouch -sim Hello.app hello.exe

Entwickeln für das Gerät

Um Software für das Gerät zu erstellen, erstellen Sie Ihre Anwendung mit der mtouch -dev-Option. Zusätzlich müssen Sie den Namen des Zertifikats zum Signieren Ihrer Anwendung bereitstellen. Das folgende Beispiel zeigt, wie die Anwendung für das Gerät erstellt wird:

$ mtouch -dev -c "iPhone Developer: Miguel de Icaza" foo.exe

In diesem Fall verwenden wir das Zertifikat „iPhone Developer: Miguel de Icaza“, um die Anwendung zu signieren. Dieser Schritt ist sehr wichtig, andernfalls verweigert das physische Gerät das Laden der Anwendung.

Ausführen Ihrer Anwendung

Starten auf dem Simulator

Das Starten auf dem Simulator ist sehr einfach, sobald Sie über ein Anwendungsbündel verfügen:

$ mtouch --sdkroot /Applications/Xcode.app -launchsim Hello.app 

Wenn das --sdkroot-Flag nicht festgelegt ist, wird standardmäßig der Pfad „xcode-select“ festgelegt, und folgende Warnung ausgegeben:

eg: warning MT0061: No Xcode.app specified (using --sdkroot), using the system Xcode as reported by 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer

Die Ausgabe der oben stehenden Befehlszeile sieht in etwa so aus:

Launching application
Application launched
PID: 98460
Press enter to terminate the application

Es wird dringend empfohlen, dass Sie auch ein Protokoll der Standardausgabe- und Standardfehlerdateien speichern, das Ihnen beim Debuggen hilft. Die Ausgabe von Console.WriteLine an stdout übergeben, und die Ausgabe von Console.Error.WriteLine sowie jede andere Laufzeitfehlermeldung wird an stderr übergeben.

Verwenden Sie dazu die Flags --stdout und --stderr:

../../tools/mtouch/mtouch --launchsim=Hello.app --stdout=output --stderr=error

Wenn Ihre Anwendung fehlschlägt, werden Ihnen die Ausgabe und der Fehler angezeigt, damit Sie das Problem ermitteln können.

Bereitstellen auf einem Gerät

Für eine Bereitstellung auf ein Gerät müssen Sie Ihr Gerät wie im Apple-Dokument Managing Devices (Verwalten von Geräten) beschrieben bereitstellen. Sobald Ihr Gerät ordnungsgemäß bereitgestellt wurde, können Sie den mtouch-Befehl verwenden, um eine kompilierte „.app“ auf Ihrem Gerät bereitzustellen. Dazu verwenden Sie folgenden Befehl:

$ mtouch —sdkroot /Applications/Xcode.app -installdev=MyApp.app

Wenn das --sdkroot-Flag nicht festgelegt ist, wird standardmäßig der Pfad „xcode-select“ festgelegt, und folgende Warnung ausgegeben:

eg: warning MT0061: No Xcode.app specified (using --sdkroot), using the system Xcode as reported by 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer

Diese Schritte werden in der Regel von Visual Studio für Mac ausgeführt.

Verweis

Auf der Seite mtouch(1) im Leitfaden finden Sie Informationen zu den anderen Befehlszeilenoptionen.