2013-03-19
Objectif : compiler une application Vala sous Linux à destination d'Android.
Nous avons une application console Vala, n'utilisant pas de bibliothèques additionnelles.
Nous désirons en produire une version Android sans modifier le code source.

(P.S.: le téléphone/tablette ciblé devra être "rooté" et disposer d'un émulateur de terminal)
Une distribution Linux 32/64-bits, Debian ou Ubuntu, avec Vala installé.
/opt/ :sudo tar xfvj android-ndk-r7b-linux-x86.tar.bz2 -C /opt
/opt/ :sudo install -m 755 agcc.pl-r7b /opt/
sudo ln -s /opt/agcc.pl-r7b /usr/bin/agcc
export NDK=/opt/android-ndk-r7b
export PATH=$PATH:$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin
/opt/android/ :sudo mkdir /opt/android
sudo tar xfvj glib-2.28.1-android-static_\(TARNYKO\).tar.bz2 -C /opt/android
pkg-config où la localiser :export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/android/lib/pkgconfig
Avec n'importe quel programme Vala n'utilisant pas de bibliothèques externes, comme celui-ci :

Nous le compilons à travers le wrapper agcc :
valac --cc=agcc -o monprogramme monprogramme.vala
Si tout s'est bien passé, un nouvel exécutable (ici "monprogramme") a dû apparaître.
Celui-ci ne se lancera pas sous Linux, car il est destiné à Android !
Créez un répertoire contenant l'exécutable et l'ensemble des bibliothèques ("lib*.so") trouvées dans cette archive :
glib-2.28.1-android_runtime_(TARNYKO).zip (1,68 Mo)
de cette manière par exemple :
unzip glib-2.28.1-android_runtime_\(TARNYKO\).zip
mkdir ~/distri
cp monprogramme ~/distri/
cp *.so.* ~/distri/
Branchez votre téléphone/tablette Android à l'ordinateur.
En utilisant le programme adb fourni par l'Android SDK, envoyez les fichiers un par un vers un répertoire de l'appareil :
cd ~/distri/
adb remount
adb push monprogramme /system
adb push libasprintf.so.0 /system
adb push libgio-2.0.so.0 /system
...
adb push libintl.so.8 /system
Sur l'appareil lui-même, ouvrez un terminal, et faites :
export LD_LIBRARY_PATH=/system
cd /system
./monprogramme

Voilà !