Avec SL4A, vous pouvez utiliser Python REPL même sur Android. Cependant, si vous avez un PC devant vous, il serait pratique que vous puissiez le REPLIQUER avec un clavier et un moniteur.
Commencez par démarrer le service RPC. Comment utiliser l'application et le shell Il y a un moyen de partir.
Ouvrez la liste des interprètes dans l'application SL4A et sélectionnez "Démarrer le serveur" dans le menu.
Sélectionnez "Public" pour ouvrir le port vers l'extérieur et "Privé" pour ouvrir le port uniquement vers l'intérieur.
Lorsque le serveur démarre, le port pour RPC s'ouvre. Vous pouvez vérifier le numéro de port à partir des éléments qui apparaissent dans la barre de notification.
Le numéro de port est généralement décidé au hasard, mais vous pouvez fixer le port avec "Server Port" dans l'élément de réglage de l'application.
Utilisez la commande ʻam` dans le shell comme suit:
python
$ am start \
-a com.googlecode.android_scripting.action.LAUNCH_SERVER \
-n com.googlecode.android_scripting/.activity.ScriptingLayerServiceLauncher
Les paramètres de port du serveur n'ont aucun effet, mais les paramètres d'intention (https://github.com/damonkohler/sl4a/blob/master/android/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptingLayerService.java) Vous pouvez Spécifier avec # 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
Par défaut, il s'ouvre en privé, mais vous pouvez le rendre public avec un paramètre.
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
Puis lancez Python.
Il existe une méthode d'utilisation de Python d'Android lui-même et une méthode d'utilisation de Python de PC.
Lancez le corps de l'interpréteur Python directement sur le shell adb. A ce moment, spécifiez le port du serveur démarré dans la variable d'environnement ʻAP_PORT`.
python
#Je ne sais pas si cela fonctionne dans votre environnement car les paramètres d'environnement sont passés par essais et erreurs.
#12345 est le numéro de port du serveur RPC
$ 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
Si python démarre, vous pouvez parler tel quel.
RPC peut être effectué si le port est connecté depuis Python du côté de l'ordinateur personnel. Utilisez android.py inclus dans python_extras.zip comme ʻimport`.
Si vous avez démarré le serveur en privé, utilisez la redirection de port ʻadb`.
python
$ adb forward tcp:12345 tcp:12345
$ AP_PORT=12345 python
Si vous avez démarré le serveur en public, spécifiez l'adresse IP Android dans la variable d'environnement ʻAP_HOST`.
python
$ AP_HOST=192.168.1.123 AP_PORT=12345 python
Dans les deux cas, spécifiez le numéro de port du serveur RPC avec la variable d'environnement ʻAP_PORT. Au lieu de variables d'environnement, vous pouvez également spécifier l'adresse comme argument, tel que
droid = android.Android (('127.0.0.1', 12345))`.
J'espère que vous pourrez utiliser les mêmes fonctions que l'unité principale SL4A.
python
>>> import android
>>> droid = android.Android()
>>> droid.makeToast("hello, world!")
Result(id=0, result=None, error=None)
(Référence: Stack Overflow - Impossible de se connecter au serveur SL4A)
Recommended Posts