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”

Deploying app bundle

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.

Android Studio

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

Drag and drop 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.

Framework Search Path in Xcode Project

Dispoziția proiectului dvs. ar trebui să arate ca cea prezentată mai jos.

Dispoziția proiectului Xcode cu Hello.framework

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