Table of Contents

Android : Misc

Utilisation de Android Studio

Android Studio (version 2.2) est l'IDE par défaut de Google pour développer des applications Android avec le SDK. Pour installer et démarrer Android Studio (https://developer.android.com/studio/install.html), il faut faire :

cd /opt
wget https://dl.google.com/dl/android/studio/ide-zips/2.2.3.0/android-studio-ide-145.3537739-linux.zip
unzip android-studio-ide-145.3537739-linux.zip
cd android-studio/bin
./studio.sh             

Une fois l'IDE installée, si l'on souhaite utiliser le NDK (Native Development Kit), il faut installer quelques outils supplémentaires via le menu Tools/Android/SDK Manager : LLDB, CMake et NDK.

Android en ligne de commande

En m'inspirant des blogs :

Commençons par télécharger les tools Android. Notons que c'est la seule manière actuellement d'installer le SDK sans installer l'IDE Android Studio.

cd /opt
wget https://dl.google.com/android/repository/tools_r25.2.3-linux.zip
unzip tools_r25.2.3-linux.zip
cd tools

plus quelques dépendances (à compléter…) :

sudo apt-get install openjdk-8-jdk ant

Nous allons maintenant lancer le Android SDK Mananger :

./android

Commençons par installer le dernier SDK et le NDK et d'autres trucs déjà présélectionnés qu'il faut installer ou mettre à jour.

HelloWorld

Créons maintenant un petit projet HelloWorld :

./android create project --target 1 --name HelloWorld --path ./HelloWorld \
  --activity HelloWorldActivity --package com.example.myandroid  

Ou en plus court :

./android create project -t 1 -n HelloWorld -p ./HelloWorld -a HelloWorldActivity -k com.orel.helloworld

Pour connaître la liste des targets disponibles, il faut lancer la commande :

./android list targets    # ici, nous utilisons la target 1 ou "android-25"

Ensuite, on peut compiler notre petit projet simplement avec Ant :

cd HelloWorld
ant             # pour voir toutes les cibles disponibles dans build.xml
ant clean       
ant debug       # pour compiler le projet en debug...

Le fichier APK (Android Application Package) sera créé à l’emplacement : HelloWorld/bin/HelloWorld-debug.apk

Déploiement sur son smartphone

Pour déployer, l'application HelloWorld sur son smartphone, il faut le brancher en USB et activer le Débogage USB. Pour ce faire, il faut commencer par passer son smartphone en mode développeur : dans les Paramètres / A propos de l'appareil / Infos Logiciel, puis cliquez 6 fois sur le “Numéro de Version”. Un nouveau menu “Option de développement” apparaît alors dans les Paramètres de votre smartphone. Ce dernier vous permet alors d'activer le Débogage USB.

On peut alors vérifier que le device (smartphone ou émulateur) est bien visible :

adb devices
   

Si un seul device est visible, le déploiement de l'application Android peut s'effectuer tout simplement avec la commande suivante :

ant debug install
Utilisation de l'émulateur

Il faut commencer par créer un AVD (Android Virtual Device) en lançant la commande :

./android avd

Dans la fenêtre qui s’ouvre, cliquer sur “New”, puis configurer le smartphone (Nexus5, x86, API level 25, …) et lui donner un nom, MyPhone. Sa configuration est sauvegardée dans ~/.android/avd/MyPhone.avd/

Pour lancer l'émulateur, il suffit de taper la commande :

./emulator -avd MyPhone

On peut alors vérifier que le device (smartphone ou émulateur) est bien visible :

adb devices

Si un seul device est visible, le déploiement de l'application Android peut s'effectuer avec la commande suivante :

ant debug install

On peut également effectuer le déploiement manuellement sur l'émulateur avec la commande adb (Android Device Bridge) :

adb -e install bin/HelloWorld-debug.apk     # -e for emulator
adb -e uninstall com.orel.helloworld      

Pour info, le nom du package “com.orel.helloworld” est indiqué dans le fichier AndroidManifest.xml.

Pour démarrer l'application manuellement :

adb shell am start -a android.intent.action.MAIN -n com.orel.helloworld/.HelloWorldActivity

Utilisation de Gradle

Gradle est la nouvelle chaîne de compilation Android qui vise à remplacer Ant : Pour générer un projet Android basé sur Gradle plutôt que Ant, il faut utiliser l'option “-g” :

./android create project -p HelloWorld -t 1 -n HelloWorld -k com.orel.helloworld -a HelloWorld -g -v 2.2.2

avec 2.2.2 la version appropiée du plugin Gradle.

Après quoi, on utilise le script gradlew pour compiler, etc.

./gradlew build
./gradlew assembleDebug

Attention : Le code généré n'est pas tout à fait correct pour la version 2.2.2 du plugin Gradle ! Voici donc quelques modifications nécessaires des sources générés pour que ça tombe en marche :-(

Voir ici, pour plus de détails :

Test du NDK

Quelques notes encore en vrac…

Pour faire au plus simple, j'ai installé l'environnement de développement Android Studio, qui contient le SDK et permet de facilement installer le NDK. Ensuite, je travaille en ligne de commande !

Pour utiliser les exemples NDK avec Gradle en ligne de commande, il faut positionner les variables d'environnement ANDROID_HOME et ANDROID_NDK_HOME sur les installations locales de SDK et du NDK respectivement.

export ANDROID_HOME=/opt/Android/sdk
export ANDROID_NDK_HOME=/opt/Android/sdk/ndk-bundle
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_NDK_HOME

Ensuite on peut tester un petit exemple…

git clone https://github.com/googlesamples/android-ndk.git
cd android-ndk/native-activity  
./gradlew assembleDebug

Puis on effectue le déploiement avec l'emulateur…

emulator -avd MyPhone
abd devices
./gradlew installDebug

(…)

Pour ajouter du code C/C++ à son projet Android :

https://developer.android.com/studio/projects/add-native-code.html

A propos de NativeActivity :

A propos de NDK :

Les exemples classiques :

Pour récupérer les exemples classiques via github :

git clone https://github.com/googlesamples/android-ndk.git                 # branch master
git clone -b android-mk  https://github.com/googlesamples/android-ndk.git  # branch android-mk  

Android et SDL2

On positionne correctement son environnement…

export ANDROID_HOME=/opt/Android/sdk
export ANDROID_NDK_HOME=/opt/Android/sdk/ndk-bundle
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_NDK_HOME

Ensuite, on va récupérer SDL2 et préparer notre petite coquille en suivant ce tutoriel : http://www.dinomage.com/2013/01/howto-sdl-on-android/

cd /opt
wget http://www.libsdl.org/release/SDL2-2.0.5.zip
unzip SDL2-2.0.5.zip
cp -rf SDL2-2.0.5/android-project my-android-project
cd my-android-project
ln -s /opt/SDL2-2.0.5 jni/SDL

Commençons par mettre à jour le fichier “build.properties” en indiquant la target API que vous avez installé, “android-25” dans mon cas.

Dans le fichier “jni/src/Android.mk”, remplacez “YourSourceHere.c” par main.c et ajoutez le fichier image.bmp dans un sous-répertoire 'assets'. Notez que les données contenues dans ce répertoire seront accessibles dans votre APK.

cp main.c jni/src                      
mkdir assets ; cp image.bmp assets/    

On compile et on installe tout ça…

ndk-build
ant debug
emulator -avd MyPhone
ant debug  install

Et ça marche !!!

Biblio