2013-04-01
Objectif : afficher des lignes, textes et images sous Android avec la bibliothèque Cairo et le langage Vala.
Cairo est une bibliothèque graphique vectorielle 2D ; elle est notamment utilisée par le toolkit GTK+.
Nous avons vu dans un article précédent qu'il était possible d'exécuter un programme Vala sous Android. Nous allons en créer un utilisant Cairo pour afficher formes, textes et images dans une fenêtre Android.

(P.S.: le téléphone/tablette ciblé devra être "rooté")
Une distribution Linux 32/64-bits avec Vala installé.
Nous allons tout d'abord installer l'application Android qui servira de base à nos tests :
Cairo.apk (349 Ko)
Une fois copiée et installée sur l'appareil, nous pouvons la lancer...

... et ainsi voir Cairo en action :

Un travail d'artiste 😉.
/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
Installez Glib et Cairo (statiques) pour Android :
/opt/android/ :sudo mkdir /opt/android
sudo tar xfvj glib-2.28.1-android-static_\(TARNYKO\).tar.bz2 -C /opt/android
sudo tar xfvj cairo-1.10.2-android-static_\(TARNYKO\).tar.bz2 -C /opt/android
pkg-config où les localiser :export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/android/lib/pkgconfig
Nous allons ici compiler les exemples trouvés dans ce fichier projet :
cairo-android_vala.tar.bz2 (1,52 Mo)
à extraire à l'endroid de votre choix avec :
tar xfvj cairo-android_vala.tar.bz2
Nous modifions le code source "cairo-android.vala", par exemple ligne 38 pour modifier le texte :
android_context.show_text ("Mon test perso !");
Finalement, nous compilons avec le script fouri (ouvrez-le pour voir le détail) :
./compile-cairo.sh
Nous obtenons un fichier final "libcairo-android.so" dans le même répertoire.
Branchez votre téléphone/tablette Android à l'ordinateur.
En utilisant le programme adb fourni avec le SDK Android, envoyez le binaire dans le répertoire de l'application :
adb remount
adb push libcairo-android.so /data/data/com.android.Cairo/lib/
Relancez l'application Cairo installée en 1), et observez la modification.
Le code source "cairopng-android.vala" est intéressant en ce qu'il utilise un fichier d'image présent sur l'appareil. Ceci grâce aux lignes suivantes (condensé) :
string filename = "/data/data/com.android.Cairo/image.png";
ImageSurface surface = new ImageSurface.from_png (filename);
android_context.set_source_surface (surface, pos_x, pos_y);
android_context.paint ();
Nous modifions éventuellement, compilons avec le script fourni :
./compile-cairopng.sh
pour obtenir un nouvel "libcairo-android.so".
Toujours avec adb :
adb remount
adb push libcairo-android.so /data/data/com.android.Cairo/lib/
adb push image.png /data/data/com.android.Cairo/image.png
En relançant l'application Cairo, on obtient :

Voilà !