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
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.
- 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.
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.
A projekt elrendezésének úgy kell kinéznie, mint az alábbiakban látható.
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