Há alguma maneira de correr o Python no Android? [fechado]
estamos a trabalhar numa versão S60 e esta plataforma tem uma boa API Python.
No entanto, não há nada de oficial em Python no Android, mas como Jython existe, há uma maneira de deixar a cobra e o robô trabalharem juntos?25 answers
Uma maneira é usar Kivy:
Open source Python library for rapid development of applications que fazem uso de interfaces de usuário inovadoras, como aplicativos multi-touch.
O Kivy funciona em Linux, Windows, OS X, Android e iOS. Você pode executar o mesmo código [python] em todas as plataformas suportadas.
Existe também o novo projectoAndroid Scripting Environment (ASE/SL4A). Parece incrível, e tem alguma integração com os componentes Android nativos.
Nota: já não está em "desenvolvimento activo", mas alguns garfos podem estar.
Um exemplo via Matt Cutts via SL4A -- " aqui está um scanner de código de barras escrito em seis linhas de código de 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)
Há também SL4A escrito em grande pelos empregados do Google.
"O subconjunto Pygame para Android é uma porta de um subconjunto da funcionalidade Pygame para a plataforma Android. O objetivo do projeto é permitir a criação de jogos específicos para o Android, e facilitar a transferência de jogos de plataformas semelhantes ao PC para o Android."
Os exemplos incluem um jogo completo embalado em um APK, o que é muito interessante.
Eu postei instruções e um patch para a compilação cruzada Python 2.7.2 para Android, você pode obtê-lo no meu blog aqui: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/
EDIT: eu tenho open sourced Ignifuga , O meu motor de jogo 2D, é baseado em Python/SDL e cruza compiles para Android. Mesmo que você não o use para jogos, você pode obter idéias úteis a partir do código e do utilitário construtor (chamado Schafer, após Tim...você sabe quem).
Camada de Programação para Android
Suporta uma série de línguas. O Python é o mais maduro. Por omissão, usa o Python 2.6, mas existe um porto 3.2 que pode usar em alternativa. Eu usei esse porto para todos os tipos de coisas em um Galaxy S2 e funcionou bem.
API
O SL4A fornece um porto da sua biblioteca android
para cada língua suportada. A biblioteca fornece uma interface para a API Android subjacente através de um único objeto Android
.
from android import Android
droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade
Cada língua tem praticamente a mesma API. Você pode até usar a API JavaScript dentro do webviews.
let droid = new Android();
droid.ttsSpeak("hello from js");
Interfaces De Utilizador
Para as interfaces de utilizador, tem três opções:
- Você pode facilmente usar os diálogos genéricos, nativos e menus através do
CONJUNTO. Isso é bom para diálogos de confirmação e outros usuários básicos entrada.
- também pode abrir uma vista web de dentro de um programa em Python, depois usar o HTML5 para a interface do utilizador. Quando você usa webviews do Python, você pode passar mensagens para trás e para a frente, entre a webview e o processo Python que gerou-o. A IU não será nativa, mas ainda é uma boa opção para ter.
- há algum suporte para interfaces de Utilizador Android nativas, mas eu não sou claro como funciona, só que nunca o usei.
Podes misturar opções, então você pode ter uma webview para a interface principal, e ainda usar diálogos nativos.
QPython
Existe um projecto de terceiros chamado QPython. Ele constrói o SL4A, e joga em algumas outras coisas úteis.
O QPython dá-lhe uma UI mais simpática para gerir a sua instalação e inclui um pequeno editor de código touchscreen, uma shell Python e uma shell PIP para a gestão de pacotes. Eles também têm uma porta Python 3. Ambas as versões estão disponíveis na Play Store, livre de carga. O QPython também agrupa bibliotecas de um monte de Python em projetos Android, incluindo o Kivy, por isso não é apenas o SL4A.
Note que QPython ainda desenvolve seu garfo de SL4A (embora, não muito para ser honesto). O projeto SL4A principal em si está praticamente morto.
Ligações Úteis
- projecto SL4A (agora no GitHub): https://github.com/damonkohler/sl4a
- porta SL4A Python 3: https://code.google.com/p/python-for-android/wiki/Python3
- QPython Project: http://qpython.com
Um problema é que há muito mais do que apenas uma linguagem de programação para as ferramentas de Desenvolvimento Android. Muitos dos gráficos Android envolvem arquivos XML para configurar o display, semelhante ao HTML. Os objetos java incorporados são realmente integrados com este layout XML, e é muito mais fácil do que escrever seu próprio código para ir da lógica para mapa.
O outro problema é que o G1 (e provavelmente outros dispositivos Android para o futuro próximo) não são realmente tão rápido. Processadores de 200 MHz, e RAM é muito limitada. Mesmo em Java você tem que fazer uma quantidade decente de reescrever-para-evitar-mais-objeto-criação se você quiser fazer o seu aplicativo perfeitamente suave. Python vai ser muito lento por um tempo ainda em dispositivos móveis.
Usando o SL4A (que já foi mencionado por si próprio noutras respostas), você pode Executar uma instância completa web2py (outros frameworks web em python também são candidatos prováveis). O SL4A não lhe permite fazer componentes UI nativos (botões, barras de posicionamento, etc.), mas suporta o WebViews. Uma WebView é basicamente nada mais do que um navegador listrado para baixo apontado para um endereço fixo. Acredito que a aplicação nativa do Gmail usa uma vista web de ir pela rota normal de widget.
Esta rota teria algumas características interessantes:
- no caso da maioria dos frameworks web python, você poderia realmente desenvolver e testar sem usar um dispositivo android ou emulador android.
- qualquer que seja o código Python que acabes por escrever para o telemóvel também pode ser colocado num servidor web público com muito pouca (se alguma) modificação. Você poderia tirar proveito de todas as coisas malucas da web lá fora: query, HTML5, CSS3, etc.
Kivy
Eu quero postar isso como uma extensão do que @JohnMudd já respondeu (, mas por favor, tenham paciência comigo enquanto o inglês não é a minha primeira língua)
Passaram-se anos desde então, e o Kivy evoluiu para v1.9-dev. O maior ponto de venda da Kivy, na minha opinião, é a sua compatibilidade entre plataformas. Pode codificar e testar no seu ambiente local (Windows / * nix, etc.), também pode compilar, depurar e embalar o seu aplicativo para executar no seu Dispositivos Android/iOS / Mac / Windows.
Com a própria linguagem do Kivy kv , você pode codificar e construir a interface gráfica facilmente (é como Java XML, mas em vez de TextView etc., KV tem seu próprio {[[0]} para a tradução similar), que é na minha opinião bastante fácil de adotar.
Actualmente Buildozer e python-for-android são as ferramentas mais recomendadas para compilar/empacotar as suas aplicações. Eu tentei os dois e posso dizer firmemente que eles fazem a construção de Android aplicações com Python a breeze. Os usuários que se sentem confortáveis em sua prompt console/terminal/comando não devem ter problemas em usá-los, e seus guias também estão bem documentados.
Além disso, o iOS é outro grande ponto de venda do Kivy, desde que possa usar a mesma base de código com pequenas alterações necessárias para testar o seu dispositivo iOS, via O Kivy-ios As ferramentas Homebrew, embora o Xcode seja necessário para a compilação antes de rodar nos seus dispositivos (AFAIK o simulador iOS no Xcode atualmente não funciona para a construção x86-arquitetura). Há também alguns problemas de dependência que devem ser compilados e rodeados manualmente no Xcode para ter uma compilação bem sucedida, mas eles não seriam muito difíceis de resolver e as pessoas em Kivy Google Group são realmente úteis também.
Com tudo dito, os usuários com bom conhecimento em Python não devem ter problemas em pegar o básico em semanas (se não Dias) para construir alguns aplicativos simples.
Também vale a pena mencionar é que você pode agrupar (compilar receitas) os seus módulos Python com a compilação para que os utilizadores possam realmente fazer uso de muitas bibliotecas existentes que o Python nos traz, como os Pedidos & Pil etc. através do suporte de extensão do Kivy.
Por vezes a sua aplicação requer uma funcionalidade que está para além da âmbito do que Kivy pode entregar. Nesses casos, é necessário recorrer a bibliotecas de software externas. Dada a riqueza do Ecossistema Python, há já um monte de software bibliotecas que você pode simplesmente importar e usar imediatamente.
O último, mas não o menor, se você vai usar Kivy para projetos mais sérios/comerciais, você pode achar os módulos existentes não satisfatórios. Existem algumas soluções viáveis, porém, com o" trabalho em progresso " de pyjnius para Android, epyobjus . Os usuários podem agora acessar classes Java / Objective-C através desses módulos para controlar algumas das APIs nativas.
A minha a experiência no Kivy é que ele vai encontrar o seu melhor ajuste com programadores experientes Python e alguns programadores sérios que querem rápido desenvolvimento ou simples manutenção de base de código. Ele funciona bem em várias plataformas, embora não realmente com o sentimento nativo.
Espero que alguns programadores de aplicativos Python encontrem essa informação útil e comecem a dar uma olhada no Kivy. Só pode melhorar (com mais suporte e à medida que as bibliotecas / módulos são portados) se houver grande interesse do comunidade.
P. S. Não tenho qualquer relação com o Kivy, sou apenas um programador que gosta muito da ideia de trazer o Python coding fun para o desenvolvimento móvel/multi-plataforma.
USO a aplicação QPython. Ele tem um editor, uma consola, e você pode executar seus programas Python com ele. A aplicação é gratuita e o link é http://qpython.com/.
A partir do Python para android site:
Python para o android é um projecto para criar a sua própria distribuição em Python, incluindo os módulos que deseja, e criar um apk, incluindo python, libs e a sua aplicação.
Este incorporou directamente o interpretador de Python na apk da sua aplicação.
Pode utilizar Termux aplicação:
Note que o apt install python install python 3. para o python 2, deve chamar o apt install python2.
Algumas demos aqui: https://www.youtube.com/watch?v=fqqsl72mASEE também a página do github: https://github.com/termux
Também há python-on-a-chip possivelmente a executar mosync: grupo google
Pode utilizar QPython:
Tem uma consola Python, um Editor, bem como um Gestor de pacotes / instaladores
É um projecto de código aberto com implementações Python 2 e Python 3. Você pode baixar a fonte e o Android .ficheiros apk directamente do github.
QPython 2: https://github.com/qpython-android/qpython/releases
QPython 3: https://github.com/qpython-android/qpython3/releases
Chaquopy
Chaquopy é um plugin para o Android Studio baseado no sistema de Compilação. Ele se concentra em estreita integração com as ferramentas Padrão de Desenvolvimento Android.
Ele fornece APIs para chamar Java a partir do Python ou Python a partir do Java, permitindo que o desenvolvedor use qualquer linguagem é melhor para cada componente do seu aplicativo.
Ele pode baixar automaticamente Os pacotes PyPI e compô-los em um aplicativo, incluindo pacotes nativos selecionados, como o NumPy.
Ele permite o acesso completo a todas as APIs Android do Python, incluindo o toolkit de interface de usuário nativo (exemplo de atividade pure-Python).
(Eu sou o criador deste produto.)
Existe um aplicativo chamado QPython3 na playstore que pode ser usado tanto para edição e execução de script python.
Outra aplicação chamada Termux na qual poderá instalar o python com o comando
pkg install python
Não vi este postado aqui, mas você pode fazê-lo com Pyside e Qt agora que o Qt funciona no Android graças ao Necessitas.
Neste momento, parece-me um belo kludge, mas pode vir a ser uma rota viável...Outra opção se estiver à procura de 3.4. 2 ou 3. 5. 1 é este pacote no GitHub.
Python3-Android 3.4.2 ou Python3-Android 3.5.1
Ele suporta atualmente Python 3.4.2 ou 3.5.1 e a versão 10d do NDK. Também pode suportar 3.3 e 9c, 11c e 12
É bom que você simplesmente baixe, execute o make e receba o. so or the .aDe momento, uso isto para executar Python raw em dispositivos android. Com algumas modificações para os arquivos de compilação você também pode fazer x86 e armeabi 64 bit
Mais uma opção parece ser pyqtdeploy {[3] } que citando os documentos é:
Uma ferramenta que, em conjunto com outras ferramentas fornecidas com o Qt, activa a implantação das aplicações PyQt4 e PyQt5 escritas com Python v2. 7 ou Python v3. 3 ou mais tarde. Ele suporta a implementação para o desktop plataformas (Linux, Windows e OS X) e para plataformas móveis (iOS e Androide).
De acordo com a enviar a aplicação PyQt5 para Android via pyqtdeploy e Qt5 ele é desenvolvido ativamente, embora seja difícil encontrar exemplos de aplicativos Android trabalhando ou tutorial sobre como cruzar todas as bibliotecas necessárias para Android. É um projeto interessante para ter em mente no entanto!
Olha para BeeWare . No momento de responder a esta pergunta, ela ainda está em desenvolvimento precoce. Seu objetivo é ser capaz de criar aplicativos nativos com Python para todos os sistemas operacionais suportados, incluindo Android.
Confira enaml-native que pega o conceito reat-native e o aplica ao python.
Ele permite aos usuários construir aplicativos com widgets Android nativos e fornece APIs para usar bibliotecas android e java do python. Ele também se integra com o android-studio e compartilha algumas das características do Dev da react, como recarga de código e depuração remota.