golang / go
Subdepozitul Go mobile adaugă suport pentru platforme mobile (Android și iOS) și oferă instrumente pentru a construi aplicații mobile.
Există două strategii pe care le puteți urma pentru a include Go în stiva dvs. mobilă:
- Scrierea de aplicații mobile native all-Go.
- Scrierea de aplicații SDK prin generarea de legături dintr-un pachet Go și invocarea lor din Java (pe Android) și Objective-C (pe iOS).
Acest articol va conține ghiduri pas cu pas pentru a explica cum să realizațiaceste strategii.
- Instrumente
- Aplicații native
- Construirea și implementarea pe Android
- Construirea și implementarea pe iOS
- Icoana aplicației
- Aplicații SDK
- Construirea și implementarea pe Android
- Construirea și implementarea pe iOS
- Simulator iOS
.
Instrumente
Nota: Trebuie să aveți Go 1.5 sau o versiune superioară pentru a instala instrumentele mobile. (Sau cel puțin Go 1.7.4 dacă folosiți macOS Sierra)
Go Mobile introduce un nou instrument, gomobile,pentru a vă ajuta în procesul de construire și de legare.
gomobile suportă acum Go Modules!
$ gomobile bind -v -o android.aar -target=android ./package
sub directorul proiectului funcționează acum.
Pe macOS, va trebui să avețiXcode Command Line Toolsinstalat.
$ go get golang.org/x/mobile/cmd/gomobile
(Următoarele secțiuni vă vor ajuta cum să utilizați instrumentul gomobile.)
Aplicații native
Categoria nativă include aplicații scrise în întregime în Go. În prezent, aplicațiagolang.org/x/mobileconține doar un mic set de pachete care se concentrează pe:
- Controlul și configurarea aplicațiilor
- Legături OpenGL ES 2 și ES 3
- Gestionarea activelor
- Gestionarea evenimentelor
- Pachetele experimentale includ legături OpenAL, audio, fonturi, sprite și senzori de mișcare
Există diverse exemple de aplicații native în golang.org/x/mobile/example. Vom construi și implementa exemplul de bază atât pe un dispozitiv Android, cât și pe un dispozitiv iOS.
Căutați aplicația.
$ go get -d golang.org/x/mobile/example/basic
Construirea și implementarea pe Android
Executați gomobile build
pentru a construi un APK Android.
$ gomobile build -target=android golang.org/x/mobile/example/basic
Comanda Build va construi un APK numit basic.apk.
Dacă în directorul pachetului este definit un AndroidManifest.xml, acesta este adăugat la ieșirea APK. În caz contrar, se generează un manifest implicit.
Dacă aveți comanda adb instalată pe mașina dvs., puteți utiliza gomobile install
pentru a construi și împinge APK-ul pe dispozitivul mobil.
$ gomobile install golang.org/x/mobile/example/basic
Construirea și implementarea pe iOS
Executați gomobile build
pentru a construi pachetul ca o aplicație iOS.
Nota: target=ios necesită ca mașina gazdă să ruleze macOS. Trebuie să obțineți o identitate de semnare și să descărcați profiluri de provizionare pentru a continua.
$ gomobile build -target=ios golang.org/x/mobile/example/basic
Comanda de construire va construi un pachet de aplicații, numit basic.app
.
Puteți implementa fișierele .app prin glisarea și plasarea lor pe dispozitiv.
- În Xcode, deschideți fereastra > Devices.
- Selectați dispozitivul fizic din panoul din stânga.
- Drageți și plasați fișierul .app în secțiunea „Installed Apps”.
- Blocați opțiunea „Copy items if needed”
Alternativ, puteți implementa pachete de aplicații pe dispozitivul iOS utilizând instrumentul de linie de comandă ios-deploy utility. Folosiți ios-deploy pentru a împinge aplicația pe dispozitiv.
$ ios-deploy -b basic.app
Pictograma aplicației
Este posibil să setați o pictogramă a aplicației prin crearea assets/icon.png
.
Aplicații SDK și generarea de legături
În această categorie, vă vom arăta cum puteți utiliza un pachet Go în aplicația dvs. Android sau iOS existentă.
Avantajele de a urma această strategie:
- Puteți reutiliza un pachet Go dintr-o aplicație mobilă fără a face modificări semnificative în aplicația existentă.
- În cazurile în care doriți să partajați o bază de cod comună între aplicația Android și iOS, puteți scrie funcționalitatea comună o dată în Go și le puteți lipi de codul specific platformei prin invocarea pachetului Go prin intermediul bindurilor.
Limitările actuale sunt enumerate mai jos.
- În prezent, doar un subset de tipuri Go sunt acceptate.
- Legăturile de limbaj au un suprapreț de performanță.
- Există câteva limitări privind modul în care API-urile exportate ar trebui să arate din cauza limitărilor limbajului țintă.
Vom folosi pachetul de exemplu sub golang.org/x/mobile/example/bind/hello pentru a genera bindings și a invoca funcția Greetings din Java și Objective-C.
Obțineți exemplul executând comanda de mai jos.
$ go get -d golang.org/x/mobile/example/bind/...
Construirea și implementarea pe Android
Nota: Go Mobile rulează pe aceleași arhitecturi ca și Go, ceea ce înseamnă în prezent dispozitive și emulatoare ARM, ARM64, 386 și amd64. În special, Android pe dispozitive MIPS nu este încă suportat.
- Executați următoarea comandă pentru a genera fișierul aar care este potrivit pentru a fi importat în proiectele Android:
$ gomobile bind -o app/hello.aar -target=android golang.org/x/mobile/example/bind/hello
- Lansați Android Studio.
- File > Import Project… pentru a importa proiectul de referință din $GOPATH/src/golang.org/x/mobile/exemple/bind/android.
- Construiți și implementați aplicația pe dispozitiv.
Modulul app conține aplicația principală care invocă hello.Greetings
. Atunci când aplicația este lansată, vizualizarea textului este actualizată cu valoarea returnată a șirului de caractere.
Dacă nu utilizați Android Studio, pentru a lucra cu legăturile pentru Android, trebuie să aveți instalat Android SDK și variabila de mediu ANDROID_HOME setată la calea SDK. De asemenea, aveți nevoie de NDK instalat; cel mai simplu este să rulați comanda SDK sdkmanager ndk-bundle
.
Alternativ, dacă nu sunteți familiarizat cu dezvoltarea Android și nu doriți să configurați tot mediul necesar (Android SDK, Gradle, etc.), puteți utiliza acest fișier Docker pentru a construi aplicația în docker în schimb.
În plus, dacă încercați să adăugați yourmodule.aar în propriul proiect, după ce copiați fișierul yourmodule.aar și fișierul yourmodule.jar în folderul „android\app”, ar trebui să se facă editarea de mai jos în fișierul „android\app\build.gradle” pentru ca modulul dvs. să fie importat corect.
+ repositories {+ flatDir {+ dirs '.'+ }+ }
dependencies {...+ implementation (name:'yourmodulename', ext:'aar')}
Construirea și implementarea pe iOS
Nota: target=ios necesită ca mașina gazdă să ruleze macOS.
$ cd $GOPATH/src/golang.org/x/mobile/example/bind$ gomobile bind -target=ios golang.org/x/mobile/example/bind/hello
Gomobile bind va genera un pachet de framework numit Hello.framework
. Deschideți exemplul de proiect Xcode executând comanda de mai jos.
$ open ios/bind.xcodeproj
Drag and drop the Hello.framework
bundle to the Xcode project. Bifați „Copy items if needed” (Copiați elementele dacă este necesar) dacă aveți nevoie de o altă copie a pachetului cadru în cadrul Xcode altfel. În caz contrar, modificarea codului sursă al pachetului Go și rularea din nou a gomobile bind
va actualiza hello.framework.
Dacă decideți să păstrați Hello.framework
în directorul principal, trebuie să adăugați directorul principal la Framework Search Paths
în setările de construire a obiectivelor.
Dispoziția proiectului dvs. ar trebui să arate ca cea prezentată mai jos.
Construiți și rulați-l pe simulator sau pe un dispozitiv real (Cmd+R). La lansarea aplicației, eticheta de pe vizualizarea principală va fi modificată cu șirul returnat de GoHelloGreetings
care invocă funcția hello.Greetings
.
Rețineți că puteți, de asemenea, să invocați GoHelloGreetings
din Swift importând Hello.
@import Hello// ...let msg = Hello.GoHelloGreetings("gopher")
Simulator iOS
De la Go 1.5, doar darwin/amd64 funcționează pe simulatorul iOS. Pentru a utiliza simulatorul, trebuie să configurați Xcode pentru a încerca să ruleze numai binare pe 64 de biți.
Xcode se potrivește cu lățimea de biți a binarelor ARM atunci când rulează pe simulatorul X86. Adică, dacă configurați Xcode pentru a construi atât binare ARM pe 32 de biți, cât și pe 64 de biți (implicit), acesta va încerca să ruleze binare X86 pe 32 de biți pe simulator, ceea ce nu va funcționa cu Go în prezent. Modificați setările de compilare Xcode pentru a construi numai binare ARM pe 64 de biți, iar simulatorul va rula binarul amd64.
.
Leave a Reply