Domanda

Stiamo lavorando su una S60 e questa piattaforma ha un bel Python API ..

Tuttavia, non esiste nulla di ufficiale su Python su Android, ma poiché esiste Jython , esiste un modo per far lavorare insieme il serpente e il robot ??

È stato utile?

Soluzione

Un modo è usare Kivy :

  

Libreria Python open source per un rapido sviluppo di applicazioni   che utilizzano 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.

App Kivy Showcase

Altri suggerimenti

Esiste anche il nuovo Android Scripting Environment (ASE / SL4A) progetto. 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 un 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)

C'è anche SL4A scritto in grande formato dai dipendenti di Google.

" Il Sottoinsieme di Pygame per Android è una porta di un sottoinsieme di funzionalità di Pygame per Android piattaforma. 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. & Quot;

Gli esempi includono un gioco completo impacchettato in un APK, che è piuttosto interessante.

Ho pubblicato istruzioni e una patch per la compilazione incrociata di Python 2.7.2 per Android, puoi scaricarla sul mio blog qui: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

EDIT: ho aperto Ignifuga , il mio motore di gioco 2D, basato su Python / SDL e compilato in modo incrociato per Android. Anche se non lo usi per i giochi, potresti ottenere idee utili dal codice e dall'utilità del builder (di nome Schafer, dopo Tim ... sai chi).

Livello di scripting per Android

SL4A fa quello che vuoi. Puoi installarlo facilmente direttamente sul tuo dispositivo dal loro sito e non hai bisogno di root.

Supporta una gamma di lingue. Python è il più maturo. Per impostazione predefinita, utilizza Python 2.6, ma esiste una 3.2 port puoi usare invece. Ho usato quella porta per tutti i tipi di cose su un Galaxy S2 e ha funzionato bene.

API

SL4A fornisce una porta della loro libreria android per ogni lingua supportata. La libreria fornisce un'interfaccia all'API Android sottostante tramite un singolo oggetto Android .

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

Interfacce utente

Per le interfacce utente, hai tre opzioni:

  • È possibile utilizzare facilmente i dialoghi e i menu nativi generici tramite API. Questo è utile per i dialoghi di conferma e altri input utente di base.
  • Puoi anche aprire una visualizzazione Web dall'interno di uno script Python, quindi utilizzare HTML5 per l'interfaccia utente. Quando usi le visualizzazioni Web da Python, puoi passare messaggi avanti e indietro, tra la visualizzazione Web e il processo Python che lo ha generato. L'interfaccia utente non sarà nativa, ma è comunque una buona opzione avere.
  • C'è un po 'di supporto per le interfacce utente native di Android, ma io no sicuro di come funziona; Non l'ho mai usato.

Puoi mescolare le opzioni, così puoi avere una visualizzazione web per l'interfaccia principale e usare ancora i dialoghi nativi.

QPython

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 progetti Python su 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.

Link utili

Come amante di Python e programmatore Android, sono triste di dirlo non è davvero un buon modo di andare. Ci sono due problemi.

Un problema è che negli strumenti di sviluppo Android c'è molto di più di un semplice linguaggio di programmazione. Gran parte della grafica Android coinvolge file XML per configurare il display, in modo simile all'HTML. Gli oggetti Java integrati sono davvero integrati con questo layout XML, ed è molto più semplice che scrivere il proprio codice per passare dalla logica alla bitmap.

L'altro problema è che G1 (e probabilmente altri dispositivi Android per il prossimo futuro) non sono così veloci. Processori a 200 MHz e RAM è molto limitata. 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.

Kivy


Voglio pubblicare questo come estensione di ciò che @JohnMudd ha già risposto ( ma per favore abbi pazienza perché l'inglese non è la mia prima lingua )

Sono passati anni da allora e Kivy si è evoluto in v1.9-dev. Il più grande punto di forza di Kivy, secondo me, è la sua compatibilità multipiattaforma. Puoi codificare e testare nel tuo ambiente locale (Windows / * nix ecc.), Puoi anche creare, eseguire il debug e impacchettare la tua app per l'esecuzione sui tuoi dispositivi Android / iOS / Mac / Windows.

Con la stessa KV di Kivy, puoi codificare e costruire il Interfaccia grafica facilmente (è come Java XML, ma piuttosto che TextView ecc., KV ha il suo ui.widgets per la traduzione simile), che secondo me è abbastanza facile da adottare.

Attualmente Buildozer e python-for-android sono gli strumenti più consigliati per creare / 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. Gli utenti che si sentono a proprio agio nella console / nel terminale / nel prompt dei comandi non dovrebbero avere problemi a usarli e anche le loro guide sono ben documentate.

Inoltre, iOS è un altro grande punto di forza di Kivy, a condizione che tu possa utilizzare la stessa base di codice con poche modifiche necessarie per eseguire il test sul tuo dispositivo iOS, tramite kivy-ios strumenti homebrew, sebbene Xcode sia necessario per la compilazione prima di essere eseguito sui loro dispositivi (AFAIK il simulatore iOS in Xcode attualmente non funziona per la build dell'architettura x86). Ci sono anche alcuni problemi di dipendenza che devono essere compilati e manipolati manualmente in Xcode per avere una build di successo, ma non sarebbero troppo difficili da risolvere e le persone in Kivy Google Group sono davvero utili.

Detto questo, gli utenti con una buona conoscenza di Python non dovrebbero avere problemi a raccogliere le basi in settimane (se non giorni) per creare alcune semplici app.

Vale anche la pena menzionare che è possibile raggruppare (costruire ricette) i moduli Python con la build in modo che gli utenti possano davvero utilizzare molte librerie esistenti che Python ci offre, come Richieste & amp; PIL ecc. attraverso Supporto estensione Kivy .

  

A volte l'applicazione richiede funzionalità che vanno oltre   portata di ciò che Kivy può offrire. In questi casi, è necessario   ricorrere a librerie software esterne. Data la ricchezza del   Python ecosystem, c'è già un sacco di software   librerie che puoi semplicemente importare e utilizzare subito.

L'ultimo ma non meno importante, se hai intenzione di usare Kivy per progetti più seri / commerciali, potresti trovare i moduli esistenti non soddisfacenti. Esistono alcune soluzioni praticabili, con il "work in progress" di pyjnius per Android e pyobjus . Gli utenti possono ora accedere alle classi Java / Objective-C tramite quei moduli per controllare alcune delle API native.

La mia esperienza in Kivy è che troverà la soluzione migliore con programmatori Python esperti e alcuni programmatori seri che desiderano un rapido sviluppo o una semplice manutenzione della base di codice. Funziona bene su più piattaforme, anche se non proprio con la sensazione nativa .

Spero che alcuni programmatori di app Python trovino utili queste informazioni e inizino a dare un'occhiata a Kivy. Può solo migliorare (con più supporto e man mano che le librerie / i moduli vengono portati) se c'è un grande interesse da parte della comunità.

P.S. Non ho alcun rapporto con Kivy, sono solo un programmatore a cui piace davvero l'idea di rendere divertente la codifica Python nello sviluppo mobile / multipiattaforma.

Al momento no e saresti fortunato a far funzionare presto Jython. Se stai pianificando di iniziare il tuo sviluppo ora, staresti meglio se ti attieni a Java per ora.

Utilizzando SL4A (che è già stato menzionato da solo in altre risposte) puoi esegui un'istanza web2py completa (altra framework web python sono probabilmente anche candidati). SL4A non ti consente di eseguire componenti dell'interfaccia utente nativi (pulsanti, barre di scorrimento e simili), ma supporta WebViews . 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:

  • Nel caso della maggior parte dei framework Web Python, potresti effettivamente sviluppare e testare senza utilizzare un dispositivo Android o un emulatore Android.
  • Qualunque codice Python che finisci per scrivere per il telefono potrebbe anche essere messo su un server web pubblico con pochissime modifiche (se presenti).
  • Potresti trarre vantaggio da tutte le cose pazze sul web là fuori: query, HTML5, CSS3, ecc.

Uso l'applicazione QPython. Ha un editor, una console e puoi eseguire i tuoi programmi Python con esso. L'applicazione è gratuita e il link è http://qpython.com/ .

Puoi utilizzare l'applicazione Termux :

Nota che apt installa python installa python 3. per python 2 dovresti chiamare apt install python2.

Alcune demo qui: https://www.youtube.com/watch?v=fqqsl72mASE

E anche la pagina github: https://github.com/termux

Dal sito Python per Android :

  

Python per Android è un progetto per creare la tua distribuzione Python personale includendo i moduli che desideri e creare un apk che include python, libs e la tua applicazione.

Ancora un altro tentativo: https://code.google.com/p/android-python27/

Questo incorpora direttamente l'interprete Python nell'apk della tua app.

Puoi eseguire il tuo codice Python usando sl4a . sl4a supporta Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl e script di shell.

Puoi imparare sl4a Esempi di Python .

Esistono anche python-on-a-chip che probabilmente eseguono mosync: gruppo google

Chaquopy

Chaquopy è un plug-in per il sistema di build basato su Gradle di Android Studio. Si concentra su stretta integrazione con gli strumenti di sviluppo Android standard.

  • Fornisce API complete per chiamare Java da Python o < a href = "https://chaquo.com/chaquopy/doc/current/java.html" rel = "noreferrer"> Python da Java , che consente allo sviluppatore di utilizzare il linguaggio più adatto a ciascun componente del proprio app.

  • Può scaricare automaticamente Pacchetti PyPI e crearli in un'app, inclusi 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.)

Nel Playstore è presente un'app chiamata QPython3 che può essere utilizzata sia per la modifica che per l'esecuzione dello script Python.

Link al Playstore

Un'altra app chiamata Termux in cui è possibile installare python usando il comando

pkg install python

Link Playstore

Se vuoi sviluppare app, c'è Python Android Scripting Layer (SL4A) .

Scripting Layer per Android, SL4A, è un'applicazione open source che consente ai programmi scritti in una gamma di lingue interpretate di essere eseguiti su Android. Fornisce inoltre un'API di alto livello che consente a questi programmi di interagire con il dispositivo Android, semplificando le operazioni come l'accesso ai dati dei sensori, l'invio di un SMS, il rendering delle interfacce utente e così via.

Puoi usare QPython :

Ha una console Python, un editor, oltre a Gestione pacchetti / programmi di installazione

http://qpython.com/

È 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

Non l'ho visto pubblicato qui, ma puoi farlo con Pyside e Qt ora che Qt funziona su Android grazie a Necessitas.

Al momento sembra un bel kludge ma alla fine potrebbe essere un percorso praticabile ...

http://qt-project.org/wiki/PySide_for_Android_guide

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 il fatto 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

Un'altra opzione sembra essere pyqtdeploy che citando 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 sul desktop   piattaforme (Linux, Windows e OS X) e piattaforme mobili (iOS e   Android).

Secondo Distribuzione dell'applicazione PyQt5 su Android tramite pyqtdeploy e Qt5 è 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ò!

Scopri enaml-native che prende il concetto di nativo reattivo 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.

Dai un'occhiata a BeeWare . Al momento di rispondere a questa domanda è ancora in fase di sviluppo. Lo scopo è quello di essere in grado di creare app native con Python per tutti i sistemi operativi supportati, incluso Android.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top