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
- Dans le fichier build.gradle, dans la section “release”, remplacer la ligne “runProguard false” par “minifyEnabled true”.
- Dans le fichier build.gradle, dans la section “repositories” remplacer la ligne “mavenCentral()” par “jcenter()”
- Dans le fichier gradle/wrapper/gradle-wrapper.properties, mettre le champs “distributionUrl” à la valeur “https\://services.gradle.org/distributions/gradle-2.14.1-all.zip”.
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 :
- Exemples avec Gradle : https://github.com/googlesamples/android-ndk
- Exemples avec Android.mk (ndk-build system) : https://github.com/googlesamples/android-ndk/tree/android-mk
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
-
- Download SDL2 : http://www.libsdl.org/download-2.0.php
- Quelques Tutoriels sur SDL : https://wiki.libsdl.org/Tutorials
- Premier Tutoriel sur Android+SDL
- Second Tutoriel sur Android+SDL
- Wiki SDL+Android : https://wiki.libsdl.org/Android