À Noter: Je suis à la préparation d'une machine virtuelle XUbuntu contenant toute la configuration expliquée ci-bas.
Scripting Language for Android (SL4A)
Site officiel: http://code.google.com/p/android-scripting/
Quelques informations sur moi
- Mon nom est F.-Nicola Demers
- Pour me contacter, écrivez-moi au fndemers@gmail.com
- Je suis informaticien.
- Je suis enseignant au Cégep depuis 2000.
- Je travaille au Cégep de Sainte-Foy depuis 2007.
- Je m'intéresse aux logiciels libres et Linux depuis 2000.
- Je m'intéresse à Android (pour mon cours de Cégep) depuis 2012.
Pourquoi SL4A?
- Mes étudiants ne connaissaient pas le langage de base de Android: Java
- Il fallait un langage alternatif
- Python est un langage simple, pédagogique, puissant et non-typé.
Suppositions pour la suite de ce document
- Vous avez une installation Linux sur votre ordinateur (sinon, on va faire avec!)
- Vous avez Python 2.7 d'installé dans votre système (par défaut).
Informations générales sur Android
Présentation Slideshare: http://fr.slideshare.net/ranjith2011/introduction-to-android-7872075
Étapes d'installation
J'ai 2 clés USB pour réduire le temps de téléchargement.
Étape 1: Installer le SDK de Android
- Téléchargez le SDK à http://developer.android.com/sdk/
- Décompressez le fichier dans le dossier /tmp
- Rendez-vous dans le dossier créé et déplacez le dossier "sdk" dans votre compte utilisateur.
- Faites de même pour le dossier "eclipse" dans votre compte utilisateur.
- Configurez votre variable $PATH dans votre fichier ~/.bashrc en ajoutant cette ligne
export PATH=~/sdk/platform-tools/:$PATH
- Fermez votre console et ouvrez-en une autre.
- Tapez la commande pour savoir si le changement a fonctionné:
adb devices
Étape 2: Installer Eclipse et le plugin Android
- Installez Open Java en cherchant apt://openjdk-7-jdk
- Si vous avez des problèmes, vous pouvez installer SDK de Oracle par les commandes suivantes:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
- Précédemment, vous avez installé Eclipse dans votre compte dans le dossier ~/eclipse
- Partez Eclipse par la commande ~/eclipse/eclipse
- Dans le menu Window/Preference/Android, vérifiez la présence du chemin d'accès dans le SDK location qui doit être le répertoire vers android-sdk (normalement le chemin ~/sdk)
- Normalement, dans le menu Window, il devrait y avoir l'option Android SDK Manager.
- Choisissez cette option et cochez Android 4.3 (API 18) et Android 4.0.3 (API 15).
- Vérifiez que pour Android 4.0.3 API 15, vous avez coché les Sources for Android SDK.
- L'installation peut prendre du temps.
- Sous Eclipse, allez copier le chemin d'accès dans le menu Window/Preferences/Android/SDK Location Dans le menu Window/Preferences/Java/Build Path/Classpath, ajoutez une variable appelé ANDROIDSDK_ et entrez le chemin d'accès précédent (coller). Ajoutez-y le chemin /sources/android-15 pour que ça donne comme suit (ou l'équivalent):
~/sdk/sources/android-15/
Étape 3: Installer le plugin pour programmer en Python.
- Partez Eclipse.
- Dans le menu Help et l'option Install New Software, et le bouton New, tapez l'URL:
http://pydev.org/updates
- Complétez l'installation du plugin en cochant PyDev.
- Ouvrir le menu 'Window' et 'Preferences'.
- Choisir l'option 'PyDev' et 'Interpreter - Python'.
- Cliquer 'New' pour ajouter un interpréteur Python qui se trouve à /usr/bin/python
- Si l'étape de la puce (2) ne fonctionne pas, vous pouvez suivre les étapes suivantes.
- Téléchargez PyDev à http://sourceforge.net/projects/pydev/files/
- Décompressez le fichier ZIP dans le dossier ~/eclipse
- Assurez-vous que Eclipse est fermé.
- Déplacez le contenu du dossier plugins (au départ dans le dossier PyDev) dans le dossier ~/eclipse/plugins
- Déplacez le contenu du dossier features (au départ dans le dossier PyDev) dans le dossier ~/eclipse/features
- Partez Eclipse en ligne de commande comme suit:
~/eclipse/eclipse -clean
- Pour en savoir plus, consultez http://pydev.org/manual_101_install.html
Étape 4: Démarrez un premier émulateur
- Dans le menu Window/Android Virtual Device manager, faites New AVD
- Choisissez les options voulues.
- Démarrez l'émulateur.
- Voir si l'émulateur est bien accessible en tapant
adb devices
Étape 5: Installer 2 applications sur l'émulateur
- Votre émulateur doit rouler pour installer les applications (évidemment).
- Téléchargez l'application suivante dans votre dossier personnel: http://code.google.com/p/android-scripting/downloads/detail?name=sl4a_r6.apk
- Installez l'application par la commande suivante:
adb install ~/sl4a_r6.apk
- Dans l'émulateur, partez l'application en cliquant sur le bouton de l'application.
- Cliquez sur le bouton "Install Python".
- Téléchargez l'application suivante: http://code.google.com/p/android-scripting/downloads/detail?name=PythonForAndroid_r4.apk
- Installez l'application par la commande suivante:
adb install ~/PythonForAndroid_r4.apk
- Dans l'émulateur, partez l'application en cliquant sur le bouton de l'application.
- Vous devez répondre à la question positivement.
Étape 6: Créer un projet de développement Python sous Eclipse
- Créez un nouveau projet PyDev. Choisissez l'option de créer un dossier "src".
- Par le clique-droit, créez un module PyDev 'Main' appelé launch_app.py avec le code suivant:
#!/usr/bin/env python
'''
@author: Pro Android Python with SL4A
'''
import subprocess
#ADB = r'C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe'
ADB = '/home/android/android-sdks/platform-tools/adb'
APPLICATION = 'androidtest.py'
TARGET = '/sdcard/sl4a/scripts/'
def main():
# Upload the application.
subprocess.call([ADB, '-e', 'push', APPLICATION, TARGET + APPLICATION])
# Launch the application.
subprocess.call([ADB, '-e', 'shell', 'am', 'start',
'-a', 'com.googlecode.android_scripting.action.LAUNCH_BACKGROUND_SCRIPT',
'-n',
'com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher',
'-e', 'com.googlecode.android_scripting.extra.SCRIPT_PATH',
TARGET + APPLICATION])
if __name__ == '__main__':
main()
- Il faut reconfigurer les variables ADB pour préciser l'endroit du programme adb.
- Il faut aussi reconfigurer les variables APPLICATION pour corriger le nom de votre script Python.
- Créez un module 'Main' avec le code suivant:
import android
droid = android.Android()
droid.makeToast('Hello, Android!')
- Exécutez le script launch_app.py (Run PyDev).
Des exemples de code
Premier exemple
import android
droid = android.Android()
name = droid.dialogGetInput("Hello!", "What is your name?")
droid.makeToast("Hello, %s" % name.result)
Deuxième exemple
"""Speak the time."""
__author__ = 'T.V. Raman <raman@google.com>'
__copyright__ = 'Copyright (c) 2009, Google Inc.'
__license__ = 'Apache License, Version 2.0'
import android
import time
droid = android.Android()
droid.ttsSpeak(time.strftime("%_I %M %p on %A, %B %_e, %Y "))
Troisième exemple
title = 'User Interface'
message = 'Welcome to the SL4A integration test.'
droid.dialogCreateAlert(title, message)
droid.dialogSetPositiveButtonText('Continue')
droid.dialogShow()
response = droid.dialogGetResponse().result
D'autres exemples disponibles dans ce fichier ZIP: http://code.google.com/p/android-scripting/downloads/detail?name=python_scripts_r8.zip&can=2
Consultez surtout les exemples du programme test.py pour en savoir plus.
Android sur Genymotion
Il est possible d'exécuter Android sur Virtualbox. Pour ce faire, il faut installer l'application http://www.genymotion.com/
Alternative
Il existe une autre application (disponible sur le Android Store) appelé http://qpython.com qui permet d'exécuter les scripts Python 2.7 (présentés ci-haut). Je ne l'ai pas testé pour l'instant.