Respostas:
Uma maneira é usar o Kivy :
Biblioteca Python de código aberto para desenvolvimento rápido de aplicativos que fazem uso de interfaces de usuário inovadoras, como aplicativos multi-touch.
O Kivy é executado no Linux, Windows, OS X, Android e iOS. Você pode executar o mesmo código [python] em todas as plataformas suportadas.
Há também o novo projeto Android Scripting Environment (ASE / SL4A). Parece incrível e tem alguma integração com componentes nativos do Android.
Nota: não está mais em "desenvolvimento ativo", mas alguns garfos podem estar.
Sim! : Ambiente de script do Android
Um exemplo via Matt Cutts via SL4A - "aqui está um scanner de código de barras escrito em seis linhas de código 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 é um mecanismo de jogo 2D para Python (na área de trabalho) que é popular entre os novos programadores. O Subconjunto Pygame para Android descreve-se como ...
... 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 Android e facilitar a transferência de jogos de plataformas semelhantes a PC para Android.
Os exemplos incluem um jogo completo empacotado como um APK, o que é bastante interessante.
Meu blog tem instruções e um patch para compilar o Python 2.7.2 para Android.
Também abri o Ignifuga de código aberto , meu 2D Game Engine. É baseado em Python / SDL e cruza compilações para Android. Mesmo se você não usá-lo para jogos, poderá obter idéias úteis do utilitário de código ou construtor (chamado Schafer , depois de Tim ... você sabe quem).
SL4A faz o que você quer. Você pode instalá-lo facilmente diretamente no dispositivo a partir do site deles e não precisa de raiz.
Ele suporta vários idiomas. Python é o mais maduro. Por padrão, ele usa Python 2.6, mas há uma porta 3.2 você pode usar. Eu usei essa porta para todos os tipos de coisas em um Galaxy S2 e funcionou bem.
O SL4A fornece uma porta de sua android
biblioteca para cada idioma suportado. A biblioteca fornece uma interface para a API Android subjacente por meio de um único Android
objeto.
from android import Android
droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade
Cada idioma possui praticamente a mesma API. Você pode até usar a API JavaScript dentro de visualizações da web.
let droid = new Android();
droid.ttsSpeak("hello from js");
Para interfaces de usuário, você tem três opções:
Você pode misturar opções, para ter uma visualização na web da interface principal e ainda usar diálogos nativos.
Há um projeto de terceiros chamado QPython . Ele se baseia no SL4A e lança outras coisas úteis.
O QPython oferece uma interface do usuário mais agradável para gerenciar sua instalação e inclui um pequeno editor de código da tela de toque, um shell Python e um shell PIP para gerenciamento de pacotes. Eles também têm uma porta Python 3. Ambas as versões estão disponíveis na Play Store, gratuitamente. O QPython também agrupa bibliotecas de um monte de Python em projetos Android, incluindo o Kivy, portanto não é apenas o SL4A.
Observe que o QPython ainda desenvolve sua bifurcação do SL4A (no entanto, não há muito para ser honesto). O principal projeto SL4A em si está praticamente morto.
Como amante de Python e programador do Android, lamento dizer que esse não é um bom caminho a percorrer. Existem dois problemas:
Um problema é que há muito mais do que apenas uma linguagem de programação nas ferramentas de desenvolvimento do Android. Muitos gráficos do Android envolvem arquivos XML para configurar a exibição, semelhante ao HTML. Os objetos Java integrados são integrados a esse layout XML, e é muito mais fácil do que escrever seu código para passar da lógica para o bitmap.
O outro problema é que o G1 (e provavelmente outros dispositivos Android em um futuro próximo) não é tão rápido. Os processadores de 200 MHz e a RAM são muito limitados. Mesmo em Java, você precisa reescrever para evitar mais criação de objetos se quiser tornar seu aplicativo perfeitamente tranquilo. O Python ficará muito lento por um tempo ainda em dispositivos móveis.
Eu queria acrescentar o que @JohnMudd escreveu sobre Kivy. Faz anos desde a situação que ele descreveu, e Kivy evoluiu substancialmente.
O maior ponto de venda do Kivy, na minha opinião, é a compatibilidade entre plataformas. Você pode codificar e testar tudo usando qualquer ambiente de área de trabalho (Windows / * nix etc.) e empacotar seu aplicativo para uma variedade de plataformas diferentes, incluindo Android, iOS, MacOS e Windows (embora os aplicativos geralmente não tenham a aparência e a aparência nativas).
Com a própria linguagem KV do Kivy , você pode codificar e criar a interface da GUI facilmente (é como Java XML, mas em vez do TextView etc., o KV possui sua própria ui.widgets
tradução semelhante), o que, na minha opinião, é bastante fácil de adotar.
Atualmente, o Buildozer e o python-for-android são as ferramentas mais recomendadas para criar e empacotar seus aplicativos. Eu tentei os dois e posso afirmar com firmeza que eles facilitam a criação de aplicativos Android com Python. Seus guias também estão bem documentados.
O iOS é outro grande ponto de venda do Kivy. Você pode usar a mesma base de código com poucas alterações necessárias através das ferramentas Homebrew do kivy-ios , embora o Xcode seja necessário para a compilação, antes de executar em seus dispositivos (o AFAIK, o iOS Simulator no Xcode atualmente não funciona na compilação da arquitetura x86) . Existem também alguns problemas de dependência que devem ser compilados manualmente e manipulados no Xcode para que a compilação seja bem-sucedida, mas eles não seriam muito difíceis de resolver e as pessoas no Kivy Google Group também são realmente úteis.
Com tudo isso dito, os usuários com bom conhecimento de Python não devem ter problemas para entender o básico rapidamente.
Se você estiver usando o Kivy para projetos mais sérios, poderá achar os módulos existentes insatisfatórios. Existem algumas soluções viáveis. Com o pyjnius (em andamento) para Android e pyobjus , os usuários agora podem acessar as classes Java / Objective-C para controlar algumas das APIs nativas.
ScreenManager
isso para economizar muito tempo. Também um conselho é ler a lista de discussão, um grupo de pessoas conhecedoras dispostas a ajudá-lo.
Você pode usar o aplicativo Termux , que fornece um ambiente POSIX para Android, para instalar o Python.
Observe que apt install python
o Python3 será instalado no Termux. Para Python2, você precisa usar apt install python2
.
Não no momento e você teria a sorte de conseguir que o Jython funcionasse em breve. Se você está planejando iniciar seu desenvolvimento agora, seria melhor seguir o Java por agora.
Usando o SL4A (que já foi mencionado por si só em outras respostas), você pode executar uma instância web2py completa (outras estruturas da web python também são provavelmente candidatas). O SL4A não permite que você faça componentes nativos da interface do usuário (botões, barras de rolagem e similares), mas suporta WebViews . Um WebView nada mais é do que um navegador listrado apontado para um endereço fixo. Acredito que o aplicativo nativo do Gmail use um WebView em vez de seguir a rota normal do widget.
Esta rota teria algumas características interessantes:
Eu uso o aplicativo QPython . É gratuito e inclui um editor de código, um intérprete interativo e um gerenciador de pacotes, permitindo criar e executar programas Python diretamente no seu dispositivo.
No site Python para Android :
Python para android é um projeto para criar sua própria distribuição Python, incluindo os módulos que você deseja, e criar um apk incluindo python, libs e seu aplicativo.
Chaquopy é um plug-in para o sistema de compilação baseado no Gradle do Android Studio. Ele se concentra na estreita integração com as ferramentas de desenvolvimento padrão do Android.
Ele fornece APIs completas para chamar Java do Python ou Python do Java , permitindo que o desenvolvedor use a linguagem que for melhor para cada componente do aplicativo.
Ele pode baixar automaticamente pacotes PyPI e construí-los em um aplicativo, incluindo pacotes nativos selecionados, como o NumPy.
Ele permite acesso total a todas as APIs do Android a partir do Python, incluindo o kit de ferramentas da interface do usuário nativo ( exemplo de atividade pura em Python ).
Este é um produto comercial, mas é gratuito para uso em código aberto e sempre permanecerá assim.
(Eu sou o criador deste produto.)
Mais uma tentativa: https://code.google.com/p/android-python27/
Este incorpora diretamente o interpretador Python no aplicativo apk.
Aqui estão algumas ferramentas listadas no site oficial do python
Existe um aplicativo chamado QPython3 no playstore que pode ser usado para editar e executar scripts python.
Outro aplicativo chamado Termux, no qual você pode instalar o python usando o comando
pkg install python
Se você deseja desenvolver aplicativos, existe o 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.
Você também pode verificar o PySide para Android , que é na verdade ligações do Python para o Qt 4.
Existe uma plataforma chamada PyMob, na qual os aplicativos podem ser escritos exclusivamente em Python e o fluxo de ferramentas do compilador (PyMob) os converte em códigos-fonte nativos para várias plataformas.
Verifique também 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.
Experimente o Chaquopy A Python SDK para 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.
Você pode usar o QPython :
Possui um console Python, um editor e um gerenciador de pacotes / instaladores
É um projeto de código aberto com implementações em Python 2 e Python 3. Você pode baixar os arquivos .apk de origem e Android diretamente do github.
QPython 2: https://github.com/qpython-android/qpython/releases
QPython 3: https://github.com/qpython-android/qpython3/releases
Outra opção, se você estiver procurando pelo 3.4.2 ou 3.5.1, é este arquivo no GitHub.
Python3-Android 3.4.2 ou Python3-Android 3.5.1
Atualmente, ele suporta 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
É legal que você simplesmente faça o download, execute make e obtenha o .so ou o .a
Atualmente, uso isso para executar o Python bruto em dispositivos Android. Com algumas modificações nos arquivos de construção, você também pode criar x86 e armeabi de 64 bits
Não vi isso postado aqui, mas você pode fazê-lo com Pyside e Qt agora que o Qt funciona no Android, graças ao Necessitas.
Parece uma briga no momento, mas poderia ser uma rota viável eventualmente ...
Mais uma opção parece ser pyqtdeploy, que cita os documentos:
uma ferramenta que, em conjunto com outras ferramentas fornecidas com o Qt, permite a implantação de aplicativos PyQt4 e PyQt5 criados com o Python v2.7 ou Python v3.3 ou posterior. Ele suporta a implantação em plataformas de desktop (Linux, Windows e OS X) e em plataformas móveis (iOS e Android).
De acordo com a implantação do aplicativo PyQt5 no Android via pyqtdeploy e Qt5, ele é desenvolvido ativamente, embora seja difícil encontrar exemplos de aplicativos Android em funcionamento ou um tutorial sobre como compilar todas as bibliotecas necessárias no Android. É um projeto interessante a ter em mente!
Dê uma olhada no BeeWare . No momento de responder a essa pergunta, ela ainda está em desenvolvimento inicial. 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 react-native e o aplica ao python.
Ele permite que os usuários criem aplicativos com widgets nativos do Android e fornece APIs para usar bibliotecas android e java a partir de python.
Ele também se integra ao android-studio e compartilha alguns dos agradáveis recursos de desenvolvimento do Rea, como recarga de código e depuração remota.