Interagissez avec Python sur Android à partir d'un PC via adb

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.

Démarrez le service SL4A

Commencez par démarrer le service RPC. Comment utiliser l'application et le shell Il y a un moyen de partir.

Lancer depuis l'application

Ouvrez la liste des interprètes dans l'application SL4A et sélectionnez "Démarrer le serveur" dans le menu.

server.png

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.

Lancer depuis le shell

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

Démarrez Python

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.

Utilisez Python sur Android lui-même

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.

Utilisez Python sur votre PC

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

Interagissez avec Python sur Android à partir d'un PC via adb
Horloge Android correctement correcte avec adb et python
Obtenir des données de la base de données via ODBC avec Python (Access)
Avec skype, notifiez avec skype de python!
OpenJTalk sur Windows10 (parler japonais avec Python depuis la construction de l'environnement)
Remarques sur l'importation de données depuis MySQL ou CSV avec Python
Appeler C depuis Python avec DragonFFI
Utilisation de Rstan de Python avec PypeR
Installez Python à partir des sources avec Ansible
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Exécutez Aprili depuis Python sur Orange
Notes sur l'utilisation de rstrip avec python.
Remarques sur l'accès à dashDB à partir de python
Appelez python de nim avec Nimpy
Premiers pas avec Python 3.8 sous Windows
Charger fbx depuis python avec cinema4d
Appeler C / C ++ depuis Python sur Mac
[Memo] Tweet sur Twitter avec Python
Envoyer des e-mails via gmail avec Python 3.4.3.
Mettre à jour Mac Python de 2 à 3
Intégration de données depuis l'application Python sur Linux vers Amazon Redshift avec ODBC
Essayez de tweeter le flux RSS d'arXiv sur Twitter avec python de Raspeye
Envoyer et recevoir des données binaires via une communication série avec python3 (sur Mac)
Intégration de données depuis l'application Python sur Windows vers Amazon Redshift avec ODBC
Collecter des informations sur Twitter avec Python (API Twitter)
Recevoir des données textuelles de mysql avec python
Obtenir le code HTML de l'élément avec du sélénium Python
[Note] Obtenir des données de PostgreSQL avec Python
Exécutez le servo avec Python sur ESP32 (Windows)
Lire un fichier audio à partir de Python avec interruption
Tweet de python avec Twitter Developer + Tweepy
Un mémo contenant Python2.7 et Python3 dans CentOS
Chase des applications actives sur Mac avec Python
[C] [python] Lire avec AquesTalk sous Linux
Remarques sur la réalisation de l'OCR japonais avec Python
Efficacité commerciale à partir de zéro avec Python
Notification push du serveur Python vers Android
Décrypter les fichiers cryptés avec openssl depuis python avec openssl
Manipulation d'Azure CosmosDB à partir de Python Part.2
Connexion de python à MySQL sur CentOS 6.4
Si scipy est python 2.7.8, l'installation de pip trébuche
Acquisition d'images depuis une caméra avec Python + OpenCV
Télécharger des fichiers sur le Web avec Python
Créer un environnement Python avec Anaconda sur Mac
Premiers pas avec Dynamo de Python boto
Essayez d'appeler Python depuis Ruby avec une économie
Scraping depuis un site authentifié avec python
Utilisation des fonctions C ++ de python avec pybind11
L-Chika TWE Lite de Python via ToCoStick
Partager des listes de lecture VLC entre PC et Android
Installation de PIL avec Python 3.x sur macOS
Travailler avec le GPS en Python pour Raspberry Pi 3
Démarrer avec Python avec 100 coups sur le traitement du langage
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
Micro service avec GCP sur RoR à partir de zéro
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Stratégie sur la façon de monétiser avec Python Java
Traitement d'image à partir de zéro avec python (5) Transformation de Fourier
Créez un environnement python avec ansible sur centos6