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”

Wdrażanie pakietów aplikacji

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.

Android Studio

  • 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.

Przeciągnij i upuść 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.

Ścieżka wyszukiwania ramework w projekcie Xcode

Układ Twojego projektu powinien wyglądać tak, jak pokazano poniżej.

Układ projektu Xcode z Hello.framework

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