golang / go

Le sous-dépôt mobile Go ajoute le support des plateformes mobiles (Android et iOS) et fournit des outils pour construire des applications mobiles.

Il existe deux stratégies que vous pouvez suivre pour inclure Go dans votre pile mobile :

  • Écrire des applications mobiles natives tout-Go.
  • Écrire des applications SDK en générant des bindings à partir d’un paquet Go et les invoquer depuis Java (sur Android) et Objective-C (sur iOS).

Cet article contiendra des guides étape par étape pour expliquer comment réaliser ces stratégies.

  • Outils
  • Applications natives
    • Construction et déploiement sur Android
    • Construction et déploiement sur iOS
    • Icône de l’application
  • .

  • Applications SDK
    • Construction et déploiement sur Android
    • Construction et déploiement sur iOS
    • Simulateur iOS

Outils

Note : Vous devez avoir Go 1.5 ou supérieur pour installer les outils mobiles. (Ou au moins Go 1.7.4 si vous utilisez macOS Sierra)

Go Mobile introduit un nouvel outil, gomobile,pour vous aider avec la construction et le processus de liaison.

gomobile supporte les modules Go maintenant ! $ gomobile bind -v -o android.aar -target=android ./package sous le répertoire du projet fonctionne maintenant.

Sur macOS, vous devrez avoirXcode Command Line Toolsinstallé.

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

(Les sections suivantes vous aideront à utiliser l’outil gomobile.)

Applications natives

La catégorie native comprend les applications entièrement écrites en Go. Actuellement, le sitegolang.org/x/mobilecontenu seulement un petit ensemble de paquets qui se concentrent sur :

  • Contrôle et configuration de l’application
  • Les liaisons OpenGL ES 2 et ES 3
  • Gestion des actifs
  • Gestion des événements
  • Les paquets expérimentaux comprennent les liaisons OpenAL, les capteurs audio, de polices, de sprites et de mouvements

Il existe divers exemples d’applications natives sous golang.org/x/mobile/example. Nous allons construire et déployer l’exemple de base à la fois sur un appareil Android et iOS.

Grab l’application.

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

Construction et déploiement sur Android

Lancer gomobile build pour construire un APK Android.

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

La commande Build construira un APK nommé basic.apk.

Si un AndroidManifest.xml est défini dans le répertoire du paquet, il est ajouté à la sortie de l’APK. Sinon, un manifeste par défaut est généré.

Si la commande adb est installée sur votre machine, vous pouvez utiliser gomobile install pour construire et pousser l’APK vers votre appareil mobile.

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

Construction et déploiement vers iOS

Exécutez gomobile build pour construire le paquet en tant qu’application iOS.

Note : target=ios nécessite la machine hôte exécutant macOS. Vous devez obtenir une identité de signature et télécharger les profils de provisionnement afin de continuer.

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

La commande build construira un paquet d’applications, nommé basic.app.

Vous pouvez déployer les fichiers .app en les faisant glisser et en les déposant sur le périphérique.

  • Dans Xcode, ouvrez la fenêtre > Devices.
  • Sélectionnez l’appareil physique dans le volet de gauche.
  • Glissez et déposez le fichier .app dans la section « Apps installées ».
  • Cochez l’option « Copier les éléments si nécessaire »

Déploiement d'un paquet d'applications

Alternativement, vous pouvez déployer des paquets d’applications sur votre appareil iOS en utilisant l’outil de ligne de commande de l’utilitaire ios-deploy. Utilisez ios-deploy pour pousser l’application sur votre appareil.

$ ios-deploy -b basic.app

Icône d’application

Il est possible de définir une icône d’application en créant des assets/icon.png.

applications SDK et en générant des bindings

Dans cette catégorie, nous vous montrerons comment vous pouvez utiliser un paquet Go dansvotre application Android ou iOS existante.

Les avantages à suivre cette stratégie :

  • Vous pouvez réutiliser un package Go d’une application mobile sans apporter de modifications significatives à votre application existante.
  • Dans les cas où vous souhaitez partager une base de code commune entre votre application Android et iOS, vous pouvez écrire les fonctionnalités communes une fois en Go et les coller au code spécifique à la plateforme en invoquant le package Go par le biais de bindings.

Les limitations actuelles sont énumérées ci-dessous.

  • Seul un sous-ensemble de types Go est actuellement pris en charge.
  • Les liaisons de langue ont un surcoût de performance.
  • Il y a quelques limitations sur la façon dont les API exportées devraient ressembler en raison des limitations du langage cible.

Nous utiliserons le paquet exemple sous golang.org/x/mobile/exemple/bind/hello pour générer des liaisons et invoquer la fonction Greetings à partir de Java et d’Objective-C.

Reprenez l’exemple en exécutant la commande ci-dessous.

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

Construction et déploiement sur Android

Note : Go Mobile fonctionne sur les mêmes architectures que Go, ce qui signifie actuellement les appareils et émulateurs ARM, ARM64, 386 et amd64. Notamment, Android sur les dispositifs MIPS n’est pas encore pris en charge.

  • Exécutez la commande suivante pour générer le fichier aar qui convient à l’importation dans les projets Android:
$ gomobile bind -o app/hello.aar -target=android golang.org/x/mobile/example/bind/hello
  • Lancez Android Studio.
  • Fichier >Importer le projet…. pour importer le projet de référence de $GOPATH/src/golang.org/x/mobile/exemple/bind/android.

Android Studio

  • Construire et déployer l’application sur le périphérique.

Le module app contient l’application principale qui invoque le hello.Greetings. Lorsque l’application est lancée, la vue texte est mise à jour avec la valeur retournée de la chaîne.

Si vous n’utilisez pas Android Studio, afin de travailler avec les bindings pour Android, vous devez avoir le SDK Android installé et la variable d’environnement ANDROID_HOME définie sur le chemin du SDK. Vous avez également besoin du NDK installé ; le moyen le plus simple est d’exécuter la commande SDK sdkmanager ndk-bundle.

Alternativement, si vous n’êtes pas familier avec le développement android, et que vous ne souhaitez pas configurer tout l’environnement requis (Android SDK, Gradle, etc), vous pouvez utiliser ce Dockerfile pour construire l’application dans docker à la place.

En outre, si vous essayez d’ajouter yourmodule.aar dans votre propre projet, après avoir copié le fichier yourmodule.aar et le fichier yourmodule.jar dans le dossier « android\app », l’édition ci-dessous dans le fichier « android\app\build.gradle » doit être effectuée afin de rendre votre module importé correctement.

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

Construction et déploiement sur iOS

Note : target=ios nécessite que la machine hôte exécute macOS.

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

La liaison mobile générera un bundle de framework appelé Hello.framework. Ouvrez le projet Xcode type en exécutant la commande ci-dessous.

$ open ios/bind.xcodeproj

Glissez et déposez le bundle Hello.framework dans le projet Xcode. Cochez « Copier les éléments si nécessaire » si vous avez besoin d’une copie différente du bundle du framework dans le Xcode sinon. Sinon, modifier le code source du paquet Go et réexécuter gomobile bind mettra à jour le hello.framework.

Drag and drop Hello.framework

Si vous décidez de garder Hello.framework dans le répertoire principal, vous devez ajouter le répertoire principal au Framework Search Paths dans les cibles Build Settings.

Chemin de recherche du framework dans le projet Xcode

Votre disposition de projet devrait ressembler à ce qui est montré ci-dessous.

Disposition du projet Xcode avec Hello.framework

Construisez et exécutez-le sur le simulateur ou un appareil réel (Cmd+R). Lorsque l’application se lance, l’étiquette de la vue principale sera modifiée avec la chaîne de caractères renvoyée par GoHelloGreetings qui invoque la fonction hello.Greetings.

Notez que vous pouvez également invoquer GoHelloGreetings depuis Swift en important Hello.

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

Simulateur iOS

Depuis Go 1.5, seul darwin/amd64 fonctionne sur le simulateur iOS. Pour utiliser le simulateur, vous devez configurer Xcode pour qu’il n’essaie d’exécuter que des binaires 64 bits.

Xcode correspond à la largeur de bit des binaires ARM lors de l’exécution sur le simulateur X86. C’est-à-dire que si vous configurez Xcode pour construire à la fois des binaires ARM 32 bits et 64 bits (la valeur par défaut), il tentera d’exécuter des binaires X86 32 bits sur le simulateur, ce qui ne fonctionnera pas avec Go aujourd’hui. Modifiez les paramètres de construction de Xcode pour ne construire que des binaires ARM 64 bits, et le simulateur exécutera le binaire amd64.

Leave a Reply