Vous êtes ici

Tutoriel : cross-compiler sous Linux pour Android (Vala)

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.

(PS : le téléphone/tablette ciblé devra être "rooté" et disposer d'un émulateur de terminal)



Pré-requis

Une distribution Linux Debian ou Ubuntu, avec Vala installé.

Pour installer Vala, reportez-vous à cet article, partie 1).

1) Installer la chaîne de compilation

- Téléchargez l'Android NDK r7b pour Linux :
android-ndk-r7b-linux-x86.tar.bz2 (61,3 Mo)

(et extrayez-le dans "/opt" :
mv android-ndk-r7b-linux-x86.tar.bz2 /opt
cd /opt
tar xfvj android-ndk-r7b-linux-x86.tar.bz2)

- Téléchargez le script agcc (merci à Giulio Lunati pour son travail) :
agcc.pl (5 Ko)

(et installez-le dans "/opt" en le rendant exécutable :
mv agcc.pl /opt
chmod a+x /opt/agcc.pl
ln -s /opt/agcc.pl /usr/bin/agcc
)

- Configurez les variables d'environnement (soit en ajoutant ces lignes à la fin de "/etc/profile" puis en redémarrant, soit en les tapant directement dans un terminal) :
export NDK=/opt/android-ndk-r7b
export PATH=$PATH:/opt/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin


2) Installer les libraries GLib pour Android

- Téléchargez GLib 2.28.1 pour Android :
glib-2.28.1-android_(TARNYKO).tar.bz2 (1,81 Mo)

(et extrayez-les dans un nouveau dossier "/opt/android" :
mkdir /opt/android
mv glib-2.28.1-android_\(TARNYKO\).tar.bz2 /opt/android
tar xfvj glib-2.28.1-android_\(TARNYKO\).tar.bz2
)


3) Compiler

- Nous allons indiquer à "pkg-config" de localiser les librairies Android dans notre chemin spécial :
export PKG_CONFIG_PATH=/opt/android/lib/pkgconfig

Nous sommes prêts ! Nous allons prendre n'importe quel code source Vala n'utilisant pas de bibliothèques externes.

- Compiler :
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 !

4) Distribuer

- Créez un dossier contenant l'exécutable et l'ensemble des librairies (.so) trouvées dans ce fichier :
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 que vous avez déjà, je n'en doute pas :-), déjà installé sur votre système, envoyez les fichiers un par un vers un répertoire de l'appareil :
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


5) Exécuter

- Sur l'appareil lui-même, ouvrez un terminal, ajoutez le chemin du programme à une variable et lancez-le !
export LD_LIBRARY_PATH=/system
cd /system
./monprogramme

Voilà !

Commentaires

Mon dieu tu n'arrives pas a faire cela hors root...

Non mais faut pas exagérer, tu voulais pas une application sur Google Play non plus ^^ ?
Ou pire... sur l'AppStore ... :-O

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de vérifier que vous êtes un humain et d'éviter les commentaires automatiques.
Image CAPTCHA
Enter the characters shown in the image.