golang / go
Das Go-Subrepository für mobile Anwendungen fügt Unterstützung für mobile Plattformen (Android und iOS) hinzu und bietet Werkzeuge zum Erstellen mobiler Anwendungen.
Es gibt zwei Strategien, die Sie verfolgen können, um Go in Ihren mobilen Stack einzubinden:
- Das Schreiben von vollständig nativen Go-Mobilanwendungen.
- Das Schreiben von SDK-Anwendungen durch das Generieren von Bindungen aus einem Go-Paket und deren Aufruf aus Java (auf Android) und Objective-C (auf iOS).
Dieser Artikel enthält Schritt-für-Schritt-Anleitungen, um zu erklären, wie man diese Strategien erreicht.
- Tools
- Native Anwendungen
- Erstellen und Bereitstellen für Android
- Erstellen und Bereitstellen für iOS
- App-Symbol
- SDK-Anwendungen
- Erstellen und Bereitstellen für Android
- Erstellen und Bereitstellen für iOS
- iOS Simulator
Tools
Hinweis: Sie benötigen Go 1.5 oder höher haben, um mobile Tools zu installieren. (Oder mindestens Go 1.7.4, wenn Sie macOS Sierra verwenden)
Go Mobile führt ein neues Tool, gomobile, ein, das Ihnen bei der Erstellung und dem Bindungsprozess hilft.
gomobile unterstützt jetzt Go Module!
$ gomobile bind -v -o android.aar -target=android ./package
unter dem Projektverzeichnis funktioniert jetzt.
Auf macOS müssen SieXcode Command Line Tools installiert haben.
$ go get golang.org/x/mobile/cmd/gomobile
(Die folgenden Abschnitte helfen Ihnen, das gomobile-Tool zu verwenden.)
Native Anwendungen
Die native Kategorie umfasst Anwendungen, die vollständig in Go geschrieben sind. Derzeit enthält die Seitegolang.org/x/mobilenur eine kleine Anzahl von Paketen, die sich auf:
- Anwendungssteuerung und -konfiguration
- OpenGL ES 2 und ES 3 Bindungen
- Asset Management
- Event Management
- Experimentelle Pakete beinhalten OpenAL Bindungen, Audio, Font, Sprite und Bewegungssensoren
Es gibt verschiedene native Beispielanwendungen unter golang.org/x/mobile/example. Wir werden das grundlegende Beispiel sowohl für ein Android- als auch für ein iOS-Gerät erstellen und bereitstellen.
Grabben Sie die Anwendung.
$ go get -d golang.org/x/mobile/example/basic
Erstellen und Bereitstellen für Android
Starten Sie gomobile build
, um eine Android APK zu erstellen.
$ gomobile build -target=android golang.org/x/mobile/example/basic
Der Build-Befehl erstellt eine APK mit dem Namen basic.apk.
Wenn eine AndroidManifest.xml im Paketverzeichnis definiert ist, wird sie der APK-Ausgabe hinzugefügt. Andernfalls wird ein Standardmanifest generiert.
Wenn Sie den adb-Befehl auf Ihrem Rechner installiert haben, können Sie gomobile install
verwenden, um die APK zu erstellen und auf Ihr mobiles Gerät zu übertragen.
$ gomobile install golang.org/x/mobile/example/basic
Erstellen und Bereitstellen für iOS
Führen Sie gomobile build
aus, um das Paket als iOS-Anwendung zu erstellen.
Hinweis: target=ios erfordert, dass auf dem Hostrechner macOS ausgeführt wird. Sie müssen eine Signieridentität erhalten und Bereitstellungsprofile herunterladen, um fortzufahren.
$ gomobile build -target=ios golang.org/x/mobile/example/basic
Der Build-Befehl erstellt ein Anwendungspaket mit dem Namen basic.app
.
Sie können .app-Dateien durch Ziehen und Ablegen auf das Gerät bereitstellen.
- Öffnen Sie in Xcode das Fenster >Geräte.
- Wählen Sie das physische Gerät im linken Bereich aus.
- Ziehen Sie die .app-Datei in den Abschnitt „Installierte Apps“.
- Haken Sie die Option „Elemente bei Bedarf kopieren“ ab
Alternativ können Sie Anwendungsbündel auf Ihrem iOS-Gerät bereitstellen, indem Sie das Befehlszeilentool ios-deploy verwenden. Verwenden Sie ios-deploy, um die Anwendung auf Ihr Gerät zu pushen.
$ ios-deploy -b basic.app
App-Symbol
Es ist möglich, ein App-Symbol zu setzen, indem Sie assets/icon.png
.
SDK-Anwendungen erstellen und Bindungen erzeugen
In dieser Kategorie zeigen wir Ihnen, wie Sie ein Go-Paket in Ihrer bestehenden Android- oder iOS-Anwendung verwenden können.
Die Vorteile dieser Strategie:
- Sie können ein Go-Paket aus einer mobilen Anwendung wiederverwenden, ohne signifikante Änderungen an Ihrer bestehenden Anwendung vorzunehmen.
- In Fällen, in denen Sie eine gemeinsame Codebasis für Ihre Android- und iOS-Anwendung nutzen möchten, können Sie die gemeinsame Funktionalität einmal in Go schreiben und sie mit dem plattformspezifischen Code verbinden, indem Sie das Go-Paket über Bindungen aufrufen.
Die aktuellen Einschränkungen sind unten aufgelistet.
- Nur eine Teilmenge der Go-Typen wird derzeit unterstützt.
- Sprachbindungen haben einen Performance-Overhead.
- Es gibt ein paar Einschränkungen, wie die exportierten APIs aufgrund der Einschränkungen der Zielsprache aussehen sollten.
Wir werden das Beispielpaket unter golang.org/x/mobile/example/bind/hello verwenden, um Bindings zu generieren und die Funktion Greetings von Java und Objective-C aus aufzurufen.
Das Beispiel kann mit dem folgenden Befehl aufgerufen werden.
$ go get -d golang.org/x/mobile/example/bind/...
Erstellen und Bereitstellen für Android
Hinweis: Go Mobile läuft auf den gleichen Architekturen wie Go, was derzeit ARM-, ARM64-, 386- und amd64-Geräte und Emulatoren bedeutet. Insbesondere wird Android auf MIPS-Geräten noch nicht unterstützt.
- Führen Sie den folgenden Befehl aus, um die aar-Datei zu erzeugen, die für den Import in Android-Projekte geeignet ist:
$ gomobile bind -o app/hello.aar -target=android golang.org/x/mobile/example/bind/hello
- Starten Sie Android Studio.
- Datei > Projekt importieren… um das Referenzprojekt aus $GOPATH/src/golang.org/x/mobile/example/bind/android zu importieren.
- Erstellen und Bereitstellen der Anwendung auf dem Gerät.
Das App-Modul enthält die Hauptanwendung, die die hello.Greetings
aufruft. Wenn die Anwendung gestartet wird, wird die Textansicht mit dem zurückgegebenen String-Wert aktualisiert.
Wenn Sie nicht Android Studio verwenden, müssen Sie, um mit Bindungen für Android zu arbeiten, Android SDK installiert haben und die Umgebungsvariable ANDROID_HOME auf den SDK-Pfad setzen. Außerdem muss das NDK installiert sein; am einfachsten ist es, den SDK-Befehl sdkmanager ndk-bundle
auszuführen.
Alternativ können Sie, wenn Sie mit der Android-Entwicklung nicht vertraut sind und nicht alle erforderlichen Umgebungen (Android SDK, Gradle usw.) einrichten möchten, stattdessen diese Dockerdatei verwenden, um die Anwendung in Docker zu erstellen.
Außerdem, wenn Sie versuchen, yourmodule.aar in Ihr eigenes Projekt einzufügen, müssen Sie die yourmodule.aar-Datei und yourmodule.jar-Datei in den Ordner „android\app“ kopiert haben, sollten Sie die Datei „android\app\build.gradle“ bearbeiten, damit Ihr Modul korrekt importiert wird.
+ repositories {+ flatDir {+ dirs '.'+ }+ }
dependencies {...+ implementation (name:'yourmodulename', ext:'aar')}
Erstellen und Bereitstellen für iOS
Hinweis: target=ios erfordert, dass auf dem Host-Rechner macOS ausgeführt wird.
$ cd $GOPATH/src/golang.org/x/mobile/example/bind$ gomobile bind -target=ios golang.org/x/mobile/example/bind/hello
Gomobile bind erzeugt ein Framework-Bundle namens Hello.framework
. Öffnen Sie das Xcode-Beispielprojekt, indem Sie den folgenden Befehl ausführen.
$ open ios/bind.xcodeproj
Ziehen Sie das Hello.framework
-Bundle in das Xcode-Projekt und legen Sie es dort ab. Aktivieren Sie „Copy items if needed“, wenn Sie eine andere Kopie des Framework-Bundles im Xcode-Projekt benötigen. Andernfalls wird durch Ändern des Go-Paket-Quellcodes und erneutes Ausführen von gomobile bind
das hello.framework aktualisiert.
Wenn Sie sich dafür entscheiden, Hello.framework
im Hauptverzeichnis zu belassen, müssen Sie das Hauptverzeichnis in den Zieleinstellungen für die Erstellung zu Framework Search Paths
hinzufügen.
Ihr Projektlayout sollte wie unten dargestellt aussehen.
Erstellen Sie die Anwendung und führen Sie sie auf dem Simulator oder einem tatsächlichen Gerät aus (Cmd+R). Wenn die Anwendung startet, wird die Beschriftung in der Hauptansicht mit der von GoHelloGreetings
zurückgegebenen Zeichenkette geändert, die die Funktion hello.Greetings
aufruft.
Beachten Sie, dass Sie GoHelloGreetings
auch von Swift aus aufrufen können, indem Sie Hello importieren.
@import Hello// ...let msg = Hello.GoHelloGreetings("gopher")
iOS Simulator
Ab Go 1.5 funktioniert nur darwin/amd64 auf dem iOS-Simulator. Um den Simulator zu verwenden, müssen Sie Xcode so konfigurieren, dass nur 64-Bit-Binärdateien ausgeführt werden.
Xcode passt die Bitbreite der ARM-Binärdateien an, wenn sie auf dem X86-Simulator laufen. Das heißt, wenn Sie Xcode so konfigurieren, dass es sowohl 32-Bit- als auch 64-Bit-ARM-Binärdateien erstellt (die Standardeinstellung), wird es versuchen, 32-Bit-X86-Binärdateien auf dem Simulator auszuführen, was mit Go heute nicht funktioniert. Ändern Sie die Xcode-Build-Einstellungen, um nur 64-Bit-ARM-Binärdateien zu erstellen, und der Simulator führt die amd64-Binärdatei aus.
Leave a Reply