====== python workshop sl4a ====== {{tag>software}} Der hier vorgestellte Code ist im Rahmen des [[friedhof:python|Python Workshop]] entstanden. Wichtig ist auf jeden Fall, dass [[http://android-scripting.googlecode.com/hg/python/ase/android.py|android.py]] im Verzeichnis liegt, aus dem heraus ''python'' in der Konsole aufgerufen wird (Umgebungsvariable). Im Zuge des Workshops wurde ein HowTo entwickelt, wie sich der Emulator mit dem Rechner verbinden lässt, um auf seinen Rechner arbeiten zu können. Die Links finden sich dann unten ;-) - Starten des SDK - Booten des Gerätes (im Test ein Android 2.3.3) - Starten von SL4A - Runterziehen des Benachrichtigungsbereiches (auf Uhrzeithöhe) - Notieren der Portnummer (z.B. 5554) - Wechseln auf Rechner - In das Unterverzeichnis ''platform-tools'' wechseln - Befehl: ''sudo adb start-server'' - Befehl: ''./adb forward tcp:9999 tcp:5554'' - Befehl: ''export AP_PORT=9999'' - Herunterladen / Verschieben in aktuelles Verzeichnis von android.py - python in dem Verzeichnis starten, in dem android.py gespeichert ist Falls es zu dem Fehler ''java.lang.SecurityException: Authentication failed! Result(id=0, result=None, error=u'java.lang.SecurityException: Authentication failed!')'' kommt, gibt es folgenden [[http://groups.google.com/group/android-scripting/msg/92821caf32cc5a4c|Lösungsweg]]: - ''set AP_PORT=9999'' - ''set AP_HOST=localhost'' - ''adb forward tcp:9999 tcp:5554'' - ''adb shell am start -a com.googlecode.android_scripting.action.LAUNCH_SERVER -n com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher --ei com.googlecode.android_scripting.extra.USE_SERVICE_PORT 5554 (eine Zeile)'' Alternativ kann auch [[http://code.google.com/p/android-scripting/wiki/RemoteControl|so]] vorgegangen werden: - Starten des SDK - Booten des Gerätes - Starten von SL4A - Starten des Python-Interpreters (Menu -> View -> Interpreters -> Python2.x) - Wechsel zur SL4A-Darstellung - Menu -> Start Server -> Private - Wechseln auf Rechner - Befehl: ''PATH=$PATH:$HOME/mein/Pfad/zu/platform-tools'' (Pfadvariabel verändern, alternativ in der bashrc eintragen) - Zum Ordner ''platform-tools'' wechseln (wegen adb) - Befehl: ''adb forward tcp:9999 tcp:5554'' (Port-Weiterleitung. ggf. auch mit ''./adb forward ...'' auszuführen). Hierbei bezeichnet den Port, auf dem der Server lauscht (siehe 4. oben) - Befehl: ''export AP_PORT=9999'' (oder unter Windows der Befehl ''set AP_PORT=9999'') ==== Hello World ==== Zum Überprüfen auf Erfolg kann ein einfaches Hello World getestet werden. Dazu den Python-Interpreter starten und folgende Befehle ausführen: ''import android'' ''d = android.Android()'' ''d.makeToast('Hello, World!')'' Jetzt sollte auf dem Android-Gerät (entweder physisch oder emuliert) eine kurzzeitige Nachricht "Hello, World!" auftauchen. Wer jetzt anfangen will, kann sich auch der englischsprachigen [[http://code.google.com/p/android-scripting/wiki/ApiReference|API-Referenz]] bedienen. ==== Code-Schnipsel ==== - Code-Schnipsel: Apress - Pro Android Python with SL4A (en) http://www.apress.com/9781430235699 -> Source Code/Downloads unter der Artikelbeschreibung - Code-Schnipsel: O'Reilly - Python von Kopf bis Fuß (de) http://www.oreilly.de/catalog/hfpythonger/ -> Beispielcode ==== Literatur ==== - http://android-scripting.googlecode.com/files/Practical_Android_Projects_Ch05_Introducing_SL4A.pdf - http://code.google.com/p/android-scripting/wiki/TableOfContents - http://code.google.com/p/python-for-android/wiki/CreatingAPKs ==== Links Python / Android Downloads ==== - http://android-scripting.googlecode.com/files/sl4a_r5.apk - http://android-scripting.googlecode.com/files/PythonForAndroid_r4.apk - http://android-scripting.googlecode.com/files/textedit-sl4a.apk - http://code.google.com/p/python-for-android/downloads/list - http://airdroid.com/ - http://developer.android.com/sdk/