Risposte:
Un modo è usare Kivy :
Libreria Python open source per lo sviluppo rapido di applicazioni che fanno uso di interfacce utente innovative, come le app multi-touch.
Kivy funziona su Linux, Windows, OS X, Android e iOS. Puoi eseguire lo stesso codice [python] su tutte le piattaforme supportate.
Esiste anche il nuovo progetto Android Scripting Environment (ASE / SL4A). Sembra fantastico e ha una certa integrazione con i componenti Android nativi.
Nota: non più in "sviluppo attivo", ma alcune forcelle potrebbero essere.
Sì! : Ambiente di scripting Android
Un esempio tramite Matt Cutts tramite SL4A - "ecco uno scanner di codici a barre scritto in sei righe di codice Python:
import android
droid = android.Android()
code = droid.scanBarcode()
isbn = int(code['result']['SCAN_RESULT'])
url = "http://books.google.com?q=%d" % isbn
droid.startActivity('android.intent.action.VIEW', url)
import android as a;d=a.Android();d.startActivity('android.intent.action.VIEW',"http://books.google.com?q=%d"%int(d.scanBarcode()['result']['SCAN_RESULT']))
Pygame è un motore di gioco 2D per Python (su desktop) popolare tra i nuovi programmatori. Il sottoinsieme Pygame per Android si definisce come ...
... una porta di un sottoinsieme di funzionalità Pygame per la piattaforma Android. L'obiettivo del progetto è consentire la creazione di giochi specifici per Android e facilitare il porting di giochi da piattaforme simili a PC su Android.
Gli esempi includono un gioco completo impacchettato come APK, che è piuttosto interessante.
Il mio blog contiene istruzioni e una patch per la compilazione incrociata di Python 2.7.2 per Android.
Ho anche aperto Ignifuga , il mio motore di gioco 2D. È basato su Python / SDL e si compila per Android. Anche se non lo usi per i giochi, potresti ottenere idee utili dall'utilità del codice o del builder (di nome Schafer , dopo Tim ... sai chi).
SL4A fa quello che vuoi. Puoi installarlo facilmente direttamente sul tuo dispositivo dal loro sito e non hai bisogno di root.
Supporta una vasta gamma di lingue. Python è il più maturo. Per impostazione predefinita, utilizza Python 2.6, ma è invece possibile utilizzare una porta 3.2 . Ho usato quella porta per tutti i tipi di cose su un Galaxy S2 e ha funzionato bene.
SL4A fornisce una porta della loro android
libreria per ogni lingua supportata. La libreria fornisce un'interfaccia all'API Android sottostante tramite un singolo Android
oggetto.
from android import Android
droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade
Ogni lingua ha praticamente la stessa API. Puoi persino utilizzare l'API JavaScript all'interno delle visualizzazioni Web.
let droid = new Android();
droid.ttsSpeak("hello from js");
Per le interfacce utente, hai tre opzioni:
Puoi mescolare le opzioni, in modo da avere una visualizzazione web per l'interfaccia principale e continuare a usare dialoghi nativi.
Esiste un progetto di terze parti chiamato QPython . Si basa su SL4A e aggiunge alcune altre cose utili.
QPython offre un'interfaccia utente migliore per gestire l'installazione e include un piccolo editor di codice touchscreen, una shell Python e una shell PIP per la gestione dei pacchetti. Hanno anche una porta Python 3. Entrambe le versioni sono disponibili nel Play Store, gratuitamente. QPython raggruppa anche le librerie di un gruppo di Python su progetti Android, incluso Kivy, quindi non è solo SL4A.
Nota che QPython sviluppa ancora il suo fork di SL4A (anche se non molto per essere onesti). Il principale progetto SL4A stesso è praticamente morto.
Come amante di Python e programmatore Android, sono triste nel dire che questo non è un buon modo di procedere. Ci sono due problemi:
Un problema è che c'è molto di più di un semplice linguaggio di programmazione negli strumenti di sviluppo Android. Gran parte della grafica Android coinvolge file XML per configurare il display, in modo simile all'HTML. Gli oggetti Java integrati sono integrati con questo layout XML ed è molto più semplice che scrivere il codice per passare dalla logica alla bitmap.
L'altro problema è che il G1 (e probabilmente altri dispositivi Android per il prossimo futuro) non sono così veloci. Processori a 200 MHz e RAM sono molto limitati. Anche in Java, devi fare una discreta quantità di riscrittura per evitare di creare più oggetti se vuoi rendere la tua app perfettamente fluida. Python sarà troppo lento per un po 'ancora sui dispositivi mobili.
Volevo aggiungere ciò che @JohnMudd ha scritto su Kivy. Sono passati anni dalla situazione che ha descritto e Kivy si è evoluto sostanzialmente.
Il più grande punto di forza di Kivy, secondo me, è la sua compatibilità multipiattaforma. Puoi codificare e testare tutto utilizzando qualsiasi ambiente desktop (Windows / * nix ecc.), Quindi impacchettare la tua app per una gamma di piattaforme diverse, tra cui Android, iOS, MacOS e Windows (anche se le app spesso non hanno l'aspetto nativo).
Con il linguaggio KV di Kivy , puoi codificare e costruire facilmente l'interfaccia della GUI (è proprio come Java XML, ma piuttosto che TextView ecc., KV ha il suo ui.widgets
per una traduzione simile), che secondo me è abbastanza facile da adottare.
Attualmente Buildozer e python-for-android sono gli strumenti più consigliati per creare e impacchettare le tue app. Li ho provati entrambi e posso affermare con fermezza che rendono la creazione di app Android con Python un gioco da ragazzi. Anche le loro guide sono ben documentate.
iOS è un altro grande punto di forza di Kivy. Puoi usare la stessa base di codice con poche modifiche richieste tramite gli strumenti Homebrew di kivy-ios , sebbene Xcode sia richiesto per la build, prima di essere eseguito sui loro dispositivi (AFAIK il simulatore iOS in Xcode attualmente non funziona per la build di architettura x86) . Ci sono anche alcuni problemi di dipendenza che devono essere compilati manualmente e risolti in Xcode per avere una build di successo, ma non sarebbero troppo difficili da risolvere e anche le persone di Kivy Google Group sono davvero utili.
Detto questo, gli utenti con una buona conoscenza di Python non dovrebbero avere problemi a cogliere rapidamente le basi.
Se stai usando Kivy per progetti più seri, potresti trovare insoddisfacenti i moduli esistenti. Ci sono alcune soluzioni praticabili però. Con (work in progress) pyjnius per Android e pyobjus , gli utenti possono ora accedere alle classi Java / Objective-C per controllare alcune delle API native.
ScreenManager
quanto ciò ti farà risparmiare un sacco di tempo. Un consiglio è anche quello di leggere la loro mailing list, un gruppo di persone ben informate disposte ad aiutarti.
È possibile utilizzare l' app Termux , che fornisce un ambiente POSIX per Android, per installare Python.
Nota che apt install python
installerà Python3 su Termux. Per Python2, è necessario utilizzare apt install python2
.
Al momento no e saresti fortunato a far funzionare presto Jython. Se stai pianificando di iniziare il tuo sviluppo ora, staresti meglio con il solo attenersi a Java per ora.
Utilizzando SL4A (che è già stato menzionato da sola in altre risposte), è possibile eseguire una vera e web2py esempio (altri framework Python web sono probabili candidati pure). SL4A non consente di eseguire componenti dell'interfaccia utente nativi (pulsanti, barre di scorrimento e simili), ma supporta WebView . Un WebView non è altro che un browser Web con striping puntato verso un indirizzo fisso. Credo che l'app nativa di Gmail utilizzi un WebView invece di seguire il normale percorso del widget.
Questo percorso avrebbe alcune caratteristiche interessanti:
Uso l'app QPython . È gratuito e include un editor di codice, un interprete interattivo e un gestore di pacchetti, che consente di creare ed eseguire programmi Python direttamente sul dispositivo.
Dal sito Python per Android :
Python per Android è un progetto per creare la tua distribuzione Python personalizzata includendo i moduli che desideri e creare un apk che include python, libs e la tua applicazione.
Chaquopy è un plugin per il sistema di build basato su Gradle di Android Studio. Si concentra sulla stretta integrazione con gli strumenti di sviluppo Android standard.
Fornisce API complete per chiamare Java da Python o Python da Java , consentendo allo sviluppatore di utilizzare il linguaggio più adatto a ciascun componente della propria app.
Può scaricare automaticamente i pacchetti PyPI e crearli in un'app, inclusi i pacchetti nativi selezionati come NumPy.
Consente l'accesso completo a tutte le API Android da Python, incluso il toolkit dell'interfaccia utente nativa ( esempio attività pure-Python ).
Questo è un prodotto commerciale, ma è gratuito per l'uso open source e rimarrà sempre così.
(Sono il creatore di questo prodotto.)
Ancora un altro tentativo: https://code.google.com/p/android-python27/
Questo incorpora direttamente l'interprete Python nell'apk della tua app.
Ecco alcuni strumenti elencati nel sito Web ufficiale di Python
C'è un'app chiamata QPython3 nel playstore che può essere usata sia per l'editing che per eseguire script python.
Un'altra app chiamata Termux in cui è possibile installare Python usando il comando
pkg install python
Se vuoi sviluppare app, c'è Python Android Scripting Layer ( SL4A ) .
The Scripting Layer for Android, SL4A, is an open source application that allows programs written in a range of interpreted languages to run on Android. It also provides a high level API that allows these programs to interact with the Android device, making it easy to do stuff like accessing sensor data, sending an SMS, rendering user interfaces and so on.
Puoi anche controllare PySide per Android , che in realtà è i collegamenti Python per Qt 4.
Esiste una piattaforma chiamata PyMob in cui le app possono essere scritte esclusivamente in Python e il flusso di strumenti del compilatore (PyMob) le converte in codici sorgente nativi per varie piattaforme.
Controlla anche python-for-android
python-for-android is an open source build tool to let you package Python code into standalone android APKs. These can be passed around, installed, or uploaded to marketplaces such as the Play Store just like any other Android app. This tool was originally developed for the Kivy cross-platform graphical framework, but now supports multiple bootstraps and can be easily extended to package other types of Python apps for Android.
Prova Chaquopy A Python SDK per Android
Anddd ... BeeWare
BeeWare allows you to write your app in Python and release it on multiple platforms. No need to rewrite the app in multiple programming languages. It means no issues with build tools, environments, compatibility, etc.
Puoi usare QPython :
Ha una console Python, un editor, oltre a Gestione pacchetti / programmi di installazione
È un progetto open source con entrambe le implementazioni di Python 2 e Python 3. Puoi scaricare i file .apk di origine e Android direttamente da github.
QPython 2: https://github.com/qpython-android/qpython/releases
QPython 3: https://github.com/qpython-android/qpython3/releases
Un'altra opzione se stai cercando 3.4.2 o 3.5.1 è questo archivio su GitHub.
Python3-Android 3.4.2 o Python3-Android 3.5.1
Attualmente supporta Python 3.4.2 o 3.5.1 e la versione 10d di NDK. Può anche supportare 3.3 e 9c, 11c e 12
È bello che lo scarichi, esegui make e ottieni il .so o il .a
Attualmente lo uso per eseguire Python raw su dispositivi Android. Con un paio di modifiche ai file di build puoi anche fare x86 e armeabi a 64 bit
Non l'ho visto pubblicato qui, ma puoi farlo con Pyside e Qt ora che Qt funziona su Android grazie a Necessitas.
Sembra un bel kludge al momento, ma alla fine potrebbe essere un percorso praticabile ...
Un'altra opzione sembra essere pyqtdeploy che cita i documenti è:
uno strumento che, insieme ad altri strumenti forniti con Qt, consente la distribuzione di applicazioni PyQt4 e PyQt5 scritte con Python v2.7 o Python v3.3 o successive. Supporta la distribuzione su piattaforme desktop (Linux, Windows e OS X) e su piattaforme mobili (iOS e Android).
Secondo la distribuzione dell'applicazione PyQt5 su Android tramite pyqtdeploy e Qt5 , viene sviluppato attivamente, sebbene sia difficile trovare esempi di app Android funzionanti o tutorial su come compilare tutte le librerie richieste su Android. È un progetto interessante da tenere a mente però!
Dai un'occhiata a BeeWare . Al momento di rispondere a questa domanda è ancora in fase di sviluppo. L'obiettivo è riuscire a creare app native con Python per tutti i sistemi operativi supportati, incluso Android.
Scopri enaml-native che prende il concetto di reazione nativa e lo applica a Python.
Consente agli utenti di creare app con widget Android nativi e fornisce API per utilizzare le librerie Android e Java da Python.
Si integra anche con Android-Studio e condivide alcune delle interessanti funzioni di sviluppo di Rea come il ricaricamento del codice e il debug remoto.