Mit SL4A können Sie Python REPL auch unter Android verwenden. Wenn Sie jedoch einen PC vor sich haben, ist es praktisch, wenn Sie ihn mit einer Tastatur und einem Monitor austauschen können.
Starten Sie zunächst den RPC-Dienst. So bedienen Sie die App und die Shell Es gibt einen Weg, um von vorne zu beginnen.
Öffnen Sie die Liste der Dolmetscher in der SL4A-App und wählen Sie "Server starten" aus dem Menü.
Wählen Sie "Öffentlich", um den Port nach außen zu öffnen, und "Privat", um den Port nur nach innen zu öffnen.
Wenn der Server gestartet wird, wird der Port für RPC geöffnet. Sie können die Portnummer anhand der Elemente überprüfen, die in der Benachrichtigungsleiste angezeigt werden.
Die Portnummer wird normalerweise zufällig festgelegt, aber Sie können den Port mit "Server Port" im Einstellungselement der Anwendung festlegen.
Verwenden Sie den Befehl am
in der Shell wie folgt:
python
$ am start \
-a com.googlecode.android_scripting.action.LAUNCH_SERVER \
-n com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher
Server-Port-Einstellungen haben keine Auswirkung, aber Intent-Parameter (https://github.com/damonkohler/sl4a/blob/master/android/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptingLayerService.java) Sie können Angeben mit # L215).
python
$ 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 12345
Standardmäßig wird es als privat geöffnet, Sie können es jedoch mit einem Parameter öffentlich machen.
python
$ am start \
-a com.googlecode.android_scripting.action.LAUNCH_SERVER \
-n com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher \
--ez om.googlecode.android_scripting.extra.USE_PUBLIC_IP true
Starten Sie dann Python.
Es gibt eine Methode zur Verwendung von Python von Android selbst und eine Methode zur Verwendung von Python von PC.
Starten Sie den Python-Interpreter-Body direkt auf der ADB-Shell. Geben Sie zu diesem Zeitpunkt den Port des gestarteten Servers in der Umgebungsvariablen "AP_PORT" an.
python
#Ich weiß nicht, ob es in Ihrer Umgebung funktioniert, da die Umgebungseinstellungen durch Ausprobieren übergeben werden.
#12345 ist die Portnummer des RPC-Servers
$ AP_PORT=12345 \
LD_LIBRARY_PATH=/data/data/com.googlecode.pythonforandroid/files/python/lib:$LD_LIBRARY_PATH \
PYTHONPATH=/sdcard/com.googlecode.pythonforandroid/extras/python \
PYTHONHOME=/data/data/com.googlecode.pythonforandroid/files/python \
/data/data/com.googlecode.pythonforandroid/files/python/bin/python
Wenn Python startet, können Sie so sprechen, wie es ist.
RPC kann durchgeführt werden, wenn der Port von Python auf der PC-Seite verbunden ist. Verwenden Sie android.py, das in python_extras.zip enthalten ist, als "Import".
Wenn Sie den Server Private gestartet haben, verwenden Sie den adb-Port forward.
python
$ adb forward tcp:12345 tcp:12345
$ AP_PORT=12345 python
Wenn Sie den Server in Public gestartet haben, geben Sie die Android-IP-Adresse in der Umgebungsvariablen "AP_HOST" an.
python
$ AP_HOST=192.168.1.123 AP_PORT=12345 python
Geben Sie in beiden Fällen die Portnummer des RPC-Servers in der Umgebungsvariablen "AP_PORT" an. Anstelle von Umgebungsvariablen können Sie die Adresse auch als Argument angeben, z. B. "droid = android.Android (('127.0.0.1', 12345))".
Hoffentlich können Sie die gleichen Funktionen wie das SL4A-Hauptgerät verwenden.
python
>>> import android
>>> droid = android.Android()
>>> droid.makeToast("hello, world!")
Result(id=0, result=None, error=None)
(Referenz: Stapelüberlauf - Verbindung zum SL4A-Server nicht möglich)
Recommended Posts