MENU

Blog

Compiler son propre serveur App Inventor pour la classe

22 mars 2020 - 18:00

Je n'expliquerai ici que les commandes linux pour la création du serveur App Inventor. Si vous êtes sur une autre système d'exploitation, vous devriez pouvoir trouver comment utiliser les différentes commandes que je présente sur Internet. Vous pouvez également trouver un serveur livré prêt à fonctionner (pour linux uniquement) sur ma page github à l'adresse suivante : https://github.com/g-reich/MyAppInventor.

Pour suivre ce tutoriel, vous aurez besoin d'installer les plusieurs paquets (applications).

1) Pré-requis

1.1) Si vous êtes sur un système d'exploitation 32bits, vous avez besoin d'installer certaines bibliothèques.

sudo apt-get install libc6:i386 zlib1g:i386 libstdc++6:i386

1.2) Pour compiler les fichiers sources vous avez besoin d'installer git, ant et curl.

sudo apt-get install git ant curl

1.3) App Inventor ne fonctionnant qu'avec Java 8, il vous faut installer openJDK 8 qui n'est probablement pas la version installée par défaut sur votre système d'exploitation.

Commencez par vérifier votre version de Java. (La réponse doit être openjdk version "1.8.0_242")

java -version

Il faut également vérifier la version du compilateur de Java. (Même réponse que précédement)

javac -version

Si vous n'avez pas la bonne version, il faut donc installer Java 8.

sudo apt install openjdk-8-jdk

Maintenant, pour que votre système utilise la bonne version de Java, il faut ensuite choisir la bonne version avec ces deux commandes.

sudo update-alternatives --config java

sudo update-alternatives --config javac

1.4) Il faut enfin installer Google Cloud SDK. Ajoutez l'URI de distribution du SDK Cloud en tant que source de package.

echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

Assurez-vous que apt-transport-https est installé.

sudo apt-get install apt-transport-https ca-certificates gnupg

Puis

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -

Mettez à jour le SDK Cloud et installez-le.

sudo apt-get update && sudo apt-get install google-cloud-sdk

Installez le composant pour JAVA

sudo apt-get install google-cloud-sdk-app-engine-java

2) Copie des fichiers sources

- Commencez par créer, si ce n'est déjà fait, un répertoire pour recevoir les fichiers sources.

mkdir ~/Git

- Placez-vous ensuite dans ce répertoire.

cd ~/Git

- Faites maintenant une copie de la dernière version des sources d'App Inventor.

git clone https://github.com/mit-cml/appinventor-sources

- Rendez-vous ensuite dans le répertoire des sources

cd appinventor-sources

- On ajoute enfin les dépendances

git submodule update --init

3) Compilation des sources

- Rendez-vous dans le répertoire appinventor de nos sources.

cd appinventor

- On commence par la faire la commande (à refaire à chaque nouvelle compilation) :

ant clean

- Si c'est votre première compilation, créez la clé d'authentification avec la commande :

ant MakeAuthKey

- On compile enfin avec la commande :

ant

4) Création du serveur local

- On crée un nouveau répertoire dans un autre emplacement (autre que Git) et on le nomme du nom de l’application. Par ex : AppInventor. A l’intérieur, on crée deux répertoires : AIServer et BuildServer.

- Dans le premier (AIServer), on va copier le contenu du répertoire « appinventor-sources/appinventor/appengine/build/war/ ».

- Dans le second, on va copier les répertoires « build », « buildserver », « common », « components », « docs », « lib » et le fichier « build-common.xml » du répertoire « appinventor-sources/appinventor ».

- On créé à la racine de notre dossier d’application deux fichiers.

Pour le premier fichier, vous devez trouver le dossier de Google Cloud SDK. (par défaut /usr/lib/google-cloud-sdk)

gcloud info --format="value(installation.sdk_root)"

Si le dossier est différent que celui par défaut, il faut modifier le chemin du premier fichier ci-dessous.

StartAIServer.sh

#!/bin/bash

echo "Starting AppInventor AIServer..."

/usr/lib/google-cloud-sdk/bin/java_dev_appserver.sh --port=8888 --address=0.0.0.0 AIServer

 StartBuildServer.sh

#!/bin/bash

echo "Starting AppInventor BuildServer..."

cd BuildServer/buildserver

ant RunLocalBuildServer

- On doit maintenant rendre nos deux fichiers exécutables.

chmod +x *.sh

4) Lancement du serveur

- Dans deux fenêtres séparées, on saisit (en se plaçant dans notre répertoire d’application) :

./startAIServer.sh

et

./startBuildServer.sh

- Notre application est ensuite accessible à l’adresse http://localhost:8888. (localhost peut être remplacé par l'IP de l'ordinateur).

5) Configuration des utilisateurs

La configuration du serveur en local ne permet pas d'utiliser la fonction mail, vous ne pourrez donc pas utiliser l'envoie du mot de passe par mail avec vos élèves.

- Commencez par cliquer sur “Use my Google Account”. Utilisez le mail proposé par défaut pour vous connecter, aucun mot de passe n'est nécessaire. Pensez cependant à cocher la case “login as an administrator”.

- Nous pourrions utiliser ce système de connexion avec nos élèves mais pour des raisons de sécurité, je vous invite à modifier le mode de connexion car comme vous l'avez constaté on peut se connecter en administrateur sans mot de passe dans ce mode.

1. Une fois connecté en tant qu'administrateur, utilisez le menu Admin en haut et choisissez "User Admin". Sur la page où vous arrivez, vous pouvez créer les comptes pour vos élèves. Etant donné que la fonction mail n'est pas active en locale, il faudra créer les comptes de vos élèves en saisissant vous-même les mots de passe. Mais commencez déjà par vous créer un compte pour vous-même en vous attribuant les droits d'administrateur (cochez is Admin? dans la fenêtre de création d'utilisateur).

2. Rendez-vous ensuite dans le répertoire AIServer/WEB-INF de votre application. Ouvrez le fichier appengine-web.xml. Recherchez “auth.usegoogle” et passez la valeur à false.

3. Redémarrer le serveur. Le lien “Use Google Account” a désormais disparu et seul la connexion avec login/password est désormais disponible. Reste maintenant à créer les comptes pour vos élèves.

6) Application pour réaliser les tests avec l'interface App Inventor

Lors de le la compilation de votre serveur App Inventor, une application Android a été créée dans le repertoire "appinventor-sources/appinventor/build/buildserver". Transférez puis installez le fichier MIT AI2 Companion.apk sur votre appareil mobile pour pouvoir faire les tests avec l'interface.

7) Information importante

Ne faites pas de mise à jour du serveur en cours d'année car à chaque nouvelle version, la base de données (projets et utilisateurs) sera effacée. Sauvegardez vos projets à conserver avant tout changement.