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 ;-)

  1. Starten des SDK
  2. Booten des Gerätes (im Test ein Android 2.3.3)
  3. Starten von SL4A
  4. Runterziehen des Benachrichtigungsbereiches (auf Uhrzeithöhe)
  5. Notieren der Portnummer (z.B. 5554)
  6. Wechseln auf Rechner
  7. In das Unterverzeichnis platform-tools wechseln
  8. Befehl: sudo adb start-server
  9. Befehl: ./adb forward tcp:9999 tcp:5554
  10. Befehl: export AP_PORT=9999
  11. Herunterladen / Verschieben in aktuelles Verzeichnis von android.py
  12. 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:

  1. set AP_PORT=9999
  2. set AP_HOST=localhost
  3. adb forward tcp:9999 tcp:5554
  4. 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:

  1. Starten des SDK
  2. Booten des Gerätes
  3. Starten von SL4A
  4. Starten des Python-Interpreters (Menu → View → Interpreters → Python2.x)
  5. Wechsel zur SL4A-Darstellung
  6. Menu → Start Server → Private
  7. Wechseln auf Rechner
  8. Befehl: PATH=$PATH:$HOME/mein/Pfad/zu/platform-tools (Pfadvariabel verändern, alternativ in der bashrc eintragen)
  9. Zum Ordner platform-tools wechseln (wegen adb)
  10. 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)
  11. 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 API-Referenz bedienen.

Code-Schnipsel

  1. Code-Schnipsel: Apress - Pro Android Python with SL4A (en) http://www.apress.com/9781430235699 → Source Code/Downloads unter der Artikelbeschreibung
  2. Code-Schnipsel: O'Reilly - Python von Kopf bis Fuß (de) http://www.oreilly.de/catalog/hfpythonger/ → Beispielcode

Literatur

python_workshop_sl4a.txt · Zuletzt geändert: 2012/06/28 23:13 von ryuno-ki