Inhaltsverzeichnis
python workshop sl4a
Der hier vorgestellte Code ist im Rahmen des Python Workshop entstanden.
Wichtig ist auf jeden Fall, dass 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 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 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 Befehlset 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 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