golang / go
Podrepozytorium Go mobile dodaje wsparcie dla platform mobilnych (Android i iOS) i dostarcza narzędzia do budowania aplikacji mobilnych.
Istnieją dwie strategie, które możesz zastosować, aby włączyć Go do swojego stosu mobilnego:
- Pisanie natywnych aplikacji mobilnych all-Go.
- Pisanie aplikacji SDK przez generowanie wiązań z pakietu Go i wywoływanie ich z Java (na Androida) i Objective-C (na iOS).
Ten artykuł będzie zawierał przewodniki krok po kroku, aby wyjaśnić, jak osiągnąć te strategie.
- Narzędzia
- Aplikacje natywne
- Budowanie i wdrażanie w systemie Android
- Budowanie i wdrażanie w systemie iOS
- Ikona aplikacji
- Aplikacje SDK
- Budując i wdrażając do Androida
- Budując i wdrażając do iOS
- iOS Simulator
.
Narzędzia
Uwaga: Musisz mieć Go 1.5 lub wyższą, aby zainstalować narzędzia mobilne. (Lub przynajmniej Go 1.7.4 jeśli używasz macOS Sierra)
Go Mobile wprowadza nowe narzędzie, gomobile, aby pomóc Ci w procesie budowania i wiązania.
gomobile obsługuje Go Modules teraz!
$ gomobile bind -v -o android.aar -target=android ./package
pod katalogiem projektu działa teraz.
Na macOS, musisz mieć zainstalowaneXcode Command Line Tools.
$ go get golang.org/x/mobile/cmd/gomobile
(Następujące sekcje pomogą Ci jak używać narzędzia gomobile.)
Aplikacje natywne
Kategoria natywna obejmuje aplikacje w całości napisane w Go. Obecnie, strona thegolang.org/x/mobile zawiera tylko mały zestaw pakietów, które koncentrują się na:
- Kontroli i konfiguracji aplikacji
- OpenGL ES 2 i ES 3 bindings
- Zarządzaniu zasobami
- Zarządzaniu zdarzeniami
- Pakiety eksperymentalne zawierają bindings OpenAL, audio, font, sprite i motion sensors
Istnieją różne przykładowe aplikacje natywne pod golang.org/x/mobile/example. Zbudujemy i wdrożymy podstawowy przykład zarówno na urządzenie z systemem Android, jak i iOS.
Zgarnij aplikację.
$ go get -d golang.org/x/mobile/example/basic
Budowanie i wdrażanie na Androida
Uruchom gomobile build
, aby zbudować APK Androida.
$ gomobile build -target=android golang.org/x/mobile/example/basic
Komenda Build zbuduje APK o nazwie basic.apk.
Jeśli w katalogu pakietu jest zdefiniowany AndroidManifest.xml, zostanie on dodany do wyjściowego APK. W przeciwnym razie generowany jest domyślny manifest.
Jeśli na komputerze jest zainstalowane polecenie adb, można użyć gomobile install
do zbudowania i wysłania APK do urządzenia mobilnego.
$ gomobile install golang.org/x/mobile/example/basic
Budowanie i wdrażanie do systemu iOS
Uruchom gomobile build
, aby zbudować pakiet jako aplikację iOS.
Uwaga: target=ios wymaga maszyny hosta z systemem macOS. Musisz uzyskać tożsamość podpisywania i pobrać profile dostarczania, aby kontynuować.
$ gomobile build -target=ios golang.org/x/mobile/example/basic
Polecenie build zbuduje pakiet aplikacji o nazwie basic.app
.
Możesz wdrożyć pliki .app, przeciągając je i upuszczając na urządzenie.
- W Xcode otwórz okno > Urządzenia.
- Wybierz urządzenie fizyczne z lewego panelu.
- Przeciągnij i upuść plik .app do sekcji „Zainstalowane aplikacje”.
- Zaznacz opcję „Kopiuj elementy w razie potrzeby”
Alternatywnie można wdrażać pakiety aplikacji do urządzenia z systemem iOS za pomocą narzędzia wiersza poleceń ios-deploy. Użyj ios-deploy, aby popchnąć aplikację do urządzenia.
$ ios-deploy -b basic.app
Ikona aplikacji
Możliwe jest ustawienie ikony aplikacji poprzez tworzenie assets/icon.png
.
aplikacji SDK i generowanie wiązań
W tej kategorii pokażemy, jak można użyć pakietu Go w istniejącej aplikacji na Androida lub iOS.
Zalety tej strategii:
- Możesz ponownie wykorzystać pakiet Go z aplikacji mobilnej bez wprowadzania znaczących zmian w istniejącej aplikacji.
- W przypadkach, gdy chcesz dzielić wspólną bazę kodu między aplikacją na Androida i iOS, możesz napisać wspólną funkcjonalność raz w Go i przykleić ją do kodu specyficznego dla platformy, wywołując pakiet Go poprzez wiązania.
Obecne ograniczenia są wymienione poniżej.
- Tylko podzbiór typów Go jest obecnie obsługiwany.
- Wiązania językowe mają narzut wydajności.
- Istnieje kilka ograniczeń dotyczących tego, jak powinny wyglądać wyeksportowane interfejsy API ze względu na ograniczenia języka docelowego.
Użyjemy przykładowego pakietu pod golang.org/x/mobile/example/bind/hello do generowania wiązań i wywoływania funkcji Pozdrawiam z Javy i Objective-C.
Pobierz przykład uruchamiając poniższe polecenie.
$ go get -d golang.org/x/mobile/example/bind/...
Budowanie i wdrażanie na Androida
Uwaga: Go Mobile działa na tych samych architekturach co Go, co obecnie oznacza urządzenia i emulatory ARM, ARM64, 386 i amd64. W szczególności, Android na urządzeniach MIPS nie jest jeszcze obsługiwany.
- Uruchom następujące polecenie, aby wygenerować plik aar, który nadaje się do importowania do projektów Android:
$ gomobile bind -o app/hello.aar -target=android golang.org/x/mobile/example/bind/hello
- Uruchom Android Studio.
- Plik > Import Project… aby zaimportować projekt referencyjny z $GOPATH/src/golang.org/x/mobile/example/bind/android.
- Buduj i wdrażaj aplikację na urządzenie.
Moduł app zawiera główną aplikację, która wywołuje hello.Greetings
. Kiedy aplikacja jest uruchamiana, widok tekstowy jest aktualizowany o wartość zwracaną przez łańcuch znaków.
Jeśli nie używasz Android Studio, aby pracować z wiązaniami dla Androida, musisz mieć zainstalowany Android SDK i zmienną środowiskową ANDROID_HOME ustawioną na ścieżkę SDK. Potrzebujesz również zainstalowanego NDK; najprostszym sposobem jest uruchomienie polecenia SDK sdkmanager ndk-bundle
.
Alternatywnie, jeśli nie jesteś zaznajomiony z rozwojem androida i nie chcesz konfigurować całego wymaganego środowiska (Android SDK, Gradle, itp.), możesz użyć tego pliku Dockerfile, aby zbudować aplikację w docker zamiast.
Poza tym, jeśli spróbujesz dodać yourmodule.aar do własnego projektu, po skopiowaniu pliku yourmodule.aar i pliku yourmodule.jar do folderu „android\app”, należy wykonać poniższą edycję w pliku „android\build.gradle”, aby twój moduł został poprawnie zaimportowany.
+ repositories {+ flatDir {+ dirs '.'+ }+ }
dependencies {...+ implementation (name:'yourmodulename', ext:'aar')}
Budowanie i wdrażanie do iOS
Uwaga: target=ios wymaga, aby maszyna hosta działała pod systemem macOS.
$ cd $GOPATH/src/golang.org/x/mobile/example/bind$ gomobile bind -target=ios golang.org/x/mobile/example/bind/hello
Gomobilne wiązanie wygeneruje wiązkę frameworka o nazwie Hello.framework
. Otwórz przykładowy projekt Xcode, uruchamiając poniższe polecenie.
$ open ios/bind.xcodeproj
Przeciągnij i upuść pakiet Hello.framework
do projektu Xcode. Zaznacz „Kopiuj elementy w razie potrzeby”, jeśli potrzebujesz innej kopii pakietu frameworka w ramach Xcode w przeciwnym razie. W przeciwnym razie modyfikacja kodu źródłowego pakietu Go i ponowne uruchomienie gomobile bind
zaktualizuje hello.framework.
Jeśli zdecydujesz się zachować Hello.framework
w katalogu głównym, musisz dodać katalog główny do Framework Search Paths
w ustawieniach budowania celów.
Układ Twojego projektu powinien wyglądać tak, jak pokazano poniżej.
Zbuduj i uruchom na symulatorze lub rzeczywistym urządzeniu (Cmd+R). Gdy aplikacja zostanie uruchomiona, etykieta w widoku głównym zostanie zmodyfikowana za pomocą łańcucha zwróconego z GoHelloGreetings
, który wywołuje funkcję hello.Greetings
.
Zauważ, że możesz również wywołać GoHelloGreetings
ze Swifta, importując Hello.
@import Hello// ...let msg = Hello.GoHelloGreetings("gopher")
Symulator iOS
Od wersji Go 1.5 na symulatorze iOS działa tylko darwin/amd64. Aby korzystać z symulatora, musisz skonfigurować Xcode, aby próbować uruchamiać tylko 64-bitowe binaria.
Xcode dopasowuje szerokość bitową binarek ARM podczas uruchamiania na symulatorze X86. Oznacza to, że jeśli skonfigurujesz Xcode do budowania zarówno 32-bitowych, jak i 64-bitowych binariów ARM (domyślnie), będzie próbował uruchomić 32-bitowe binaria X86 na symulatorze, co nie będzie działać z Go dzisiaj. Zmodyfikuj ustawienia budowania Xcode, aby budować tylko 64-bitowe binaria ARM, a symulator uruchomi binaria amd64.
Leave a Reply