golang / go

A Go mobil altárház támogatja a mobil platformokat (Android és iOS), és eszközöket biztosít mobil alkalmazások készítéséhez.

Két stratégiát követhetünk a Go beépítéséhez a mobil stackbe:

  • Teljesen Go natív mobilalkalmazások írása.
  • SDK alkalmazások írása úgy, hogy kötéseket generálunk egy Go csomagból és meghívjuk őket Java-ból (Androidon) és Objective-C-ből (iOS-en).

Ez a cikk lépésről lépésre útmutatókat tartalmaz, amelyek elmagyarázzák, hogyan érhetjük el ezeket a stratégiákat.

  • Szerszámok
  • Natív alkalmazások
    • Építés és telepítés Androidra
    • Építés és telepítés iOS-re
    • Alkalmazás ikon
  • SDK alkalmazások
    • Építés és telepítés Androidra
    • Építés és telepítés iOS-re
    • iOS szimulátor

Eszközök

Megj: Szükséged van a Go 1.5 vagy annál magasabb a mobileszközök telepítéséhez. (Vagy legalább Go 1.7.4, ha macOS Sierra-t használsz)

A Go Mobile bevezet egy új eszközt, a gomobile-t,amely segít a build és a kötés folyamatában.

gomobile mostantól támogatja a Go modulokat! $ gomobile bind -v -o android.aar -target=android ./package a projektkönyvtár alatt mostantól működik.

MacOS-en telepítve kell lennie azXcode parancssori eszközöknek.

$ go get golang.org/x/mobile/cmd/gomobile

(A következő szakaszok segítenek a gomobile eszköz használatában.)

Natív alkalmazások

A natív kategóriába tartoznak a teljes egészében Go nyelven írt alkalmazások. Jelenleg agolang.org/x/mobilecontains only a small set of packages that focus on:

  • alkalmazásvezérlés és konfiguráció
  • OpenGL ES 2 és ES 3 kötések
  • eszközkezelés
  • eseménykezelés
  • A kísérleti csomagok között OpenAL kötések, audio, font, sprite és mozgásérzékelők

A golang alatt különböző natív példalkalmazások találhatók.org/x/mobile/example. Az alapvető példát fogjuk megépíteni és telepíteni mind egy Android, mind egy iOS eszközre.

Grab the application.

$ go get -d golang.org/x/mobile/example/basic

Building and deploying to Android

Run gomobile build to build an Android APK.

$ gomobile build -target=android golang.org/x/mobile/example/basic

A build parancs egy basic.apk nevű APK-t épít.

Ha a csomagkönyvtárban van egy AndroidManifest.xml definiálva, az hozzáadódik az APK kimenetéhez. Ellenkező esetben egy alapértelmezett manifeszt generálódik.

Ha a gépén telepítve van az adb parancs, akkor a gomobile install paranccsal építheti és tolhatja az APK-t a mobil eszközére.

$ gomobile install golang.org/x/mobile/example/basic

Építés és telepítés iOS-re

Futtassa a gomobile build parancsot a csomag iOS alkalmazásként való építéséhez.

Megjegyzés: a target=ios parancshoz a gazdaszámítógépen macOS fut. A folytatáshoz meg kell szereznie egy aláírási azonosítót és le kell töltenie a rendelkezésre bocsátási profilokat.

$ gomobile build -target=ios golang.org/x/mobile/example/basic

A build parancs egy basic.app nevű alkalmazáscsomagot épít.

A .app fájlokat az eszközre húzással és ejtéssel telepítheti.

  • Az Xcode-ban nyissa meg az > Eszközök ablakot.
  • Válassza ki a fizikai eszközt a bal oldali ablaktáblából.
  • Húzza az .app fájlt a “Telepített alkalmazások” szakaszba.
  • Pipálja az “Elemek másolása, ha szükséges” opciót

Alkalmazáscsomag telepítése

Alternatívaként az ios-deploy segédprogram parancssori eszközével is telepíthet alkalmazáscsomagokat az iOS eszközére. Az ios-deploy segítségével tolhatja az alkalmazást az eszközére.

$ ios-deploy -b basic.app

Alkalmazás ikon

Az alkalmazás ikonjának beállítása assets/icon.png létrehozásával lehetséges.

SDK alkalmazások és kötések generálása

Ebben a kategóriában megmutatjuk, hogyan használhat egy Go csomagot meglévő Android vagy iOS alkalmazásában.

Ez a stratégia követésének előnyei:

  • Egy Go csomagot újra felhasználhat egy mobilalkalmazásból anélkül, hogy jelentős változtatásokat kellene végrehajtania a meglévő alkalmazásán.
  • Azokban az esetekben, amikor közös kódbázist szeretne megosztani az Android és iOS alkalmazása között, a közös funkciókat egyszer megírhatja Go nyelven, és a Go csomag kötéseken keresztül történő meghívásával ragaszthatja őket a platform-specifikus kódhoz.

A jelenlegi korlátozások az alábbiakban vannak felsorolva.

  • A Go típusoknak jelenleg csak egy részhalmaza támogatott.
  • A nyelvi kötéseknek teljesítménybeli többletköltsége van.
  • A célnyelv korlátai miatt van néhány korlátozás az exportált API-k kinézetét illetően.

A golang alatt a példapakettet fogjuk használni.org/x/mobile/example/bind/hello kötések generálásához és a Greetings funkció meghívásához Java-ból és Objective-C-ből.

A példát az alábbi parancs futtatásával kapjuk meg.

$ go get -d golang.org/x/mobile/example/bind/...

Építés és telepítés Androidra

Megjegyzés: A Go Mobile ugyanazokon az architektúrákon fut, mint a Go, ami jelenleg ARM, ARM64, 386 és amd64 eszközöket és emulátorokat jelent. Figyelemre méltó, hogy az Android MIPS eszközökön még nem támogatott.

  • Az Android projektekbe való importálásra alkalmas aar fájl létrehozásához futtassa a következő parancsot:
$ gomobile bind -o app/hello.aar -target=android golang.org/x/mobile/example/bind/hello
  • Android Studio elindítása.
  • File > Import Project… a referenciaprojekt importálásához a $GOPATH/src/golang.org/x/mobile/example/bind/android.

Android Studio

  • Az alkalmazás elkészítése és telepítése az eszközre.

Az app modul tartalmazza a fő alkalmazást, amely meghívja a hello.Greetings. Az alkalmazás indításakor a szöveges nézet frissül a visszaadott string értékével.

Ha nem az Android Studio-t használja, akkor az Android kötésekkel való munkához az Android SDK telepítése és az ANDROID_HOME környezeti változó SDK-útvonalra állítása szükséges. Szükséged van az NDK telepítésére is; a legegyszerűbb az SDK parancs sdkmanager ndk-bundle futtatása.

Alternatívaként, ha nem vagy jártas az androidos fejlesztésben, és nem akarod beállítani az összes szükséges környezetet (Android SDK, Gradle, stb.), akkor használhatod ezt a Dockerfile-t, hogy az alkalmazást dockerben építsd fel helyette.

Amellett, ha megpróbálod a saját projektedhez hozzáadni a yourmodule.aar-t, a yourmodule másolása után.aar fájlt és a yourmodule.jar fájlt az “android\app” mappába, az “android\app\build.gradle” fájlban az alábbi szerkesztést kell elvégezni annak érdekében, hogy a modulodat helyesen importáld.

+ repositories {+ flatDir {+ dirs '.'+ }+ }
dependencies {...+ implementation (name:'yourmodulename', ext:'aar')}

Építés és telepítés iOS-re

Megjegyzés: a target=ios megköveteli, hogy a gazdaszámítógépen macOS futjon.

$ cd $GOPATH/src/golang.org/x/mobile/example/bind$ gomobile bind -target=ios golang.org/x/mobile/example/bind/hello

A gomobile bind egy Hello.framework nevű keretrendszer-csomagot fog generálni. Nyissa meg a minta Xcode projektet az alábbi parancs futtatásával.

$ open ios/bind.xcodeproj

Húzza a Hello.framework csomagot az Xcode projektbe. Jelölje be az “Elemek másolása szükség esetén” lehetőséget, ha egyébként a keretcsomag másolatára van szüksége az Xcode-on belül. Ellenkező esetben a Go csomag forráskódjának módosítása és a gomobile bind újbóli futtatása frissíti a hello.framework.

Drag and drop Hello.framework

Ha úgy dönt, hogy a Hello.framework a főkönyvtárban marad, akkor hozzá kell adnia a főkönyvtárat a Framework Search Paths a célpontok Build Settings.

Keretrendszer keresési útvonal az Xcode projektben

A projekt elrendezésének úgy kell kinéznie, mint az alábbiakban látható.

Xcode projekt elrendezés a Hello.framework

Build és futtassa a szimulátoron vagy egy tényleges eszközön (Cmd+R). Amikor az alkalmazás elindul, a fő nézet címkéje a hello.Greetings függvényt meghívó GoHelloGreetings által visszaadott karakterlánccal fog módosulni.

Megjegyezzük, hogy a Hello.

@import Hello// ...let msg = Hello.GoHelloGreetings("gopher")

iOS szimulátor

A Go 1.5-től kezdve csak a darwin/amd64 működik az iOS szimulátoron. A szimulátor használatához az Xcode-ot úgy kell beállítani, hogy csak 64 bites binárisokat próbáljon futtatni.

Az Xcode az X86 szimulátoron való futtatáskor az ARM binárisok bitszélességéhez igazodik. Vagyis ha úgy konfigurálod az Xcode-ot, hogy 32 bites és 64 bites ARM binárisokat is készítsen (ez az alapértelmezett), akkor megpróbál 32 bites X86 binárisokat futtatni a szimulátoron, ami ma nem fog működni a Go-val. Módosítsa az Xcode építési beállításait úgy, hogy csak 64 bites ARM binárisokat építsen, és a szimulátor az amd64 binárisokat fogja futtatni.

Leave a Reply