Ответы:
Одним из способов является использование Kivy :
Библиотека Python с открытым исходным кодом для быстрой разработки приложений, использующих инновационные пользовательские интерфейсы, такие как приложения multi-touch.
Kivy работает на Linux, Windows, OS X, Android и iOS. Вы можете запустить один и тот же код [python] на всех поддерживаемых платформах.
Существует также новый проект Android Scripting Environment (ASE / SL4A). Он выглядит потрясающе и имеет некоторую интеграцию с нативными компонентами Android.
Примечание: больше не находится под "активной разработкой", но некоторые вилки могут быть.
Да! : Среда сценариев Android
Пример через Matt Cutts через SL4A - «вот сканер штрих-кода, написанный в шести строках кода 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 - это 2D игровой движок для Python (на рабочем столе), который популярен среди новых программистов. Pygame Subset для Android описывает себя как ...
... порт подмножества функциональных возможностей Pygame для платформы Android. Целью проекта является создание игр для Android и упрощение портирования игр с платформ, подобных ПК, на Android.
Примеры включают в себя полную игру, упакованную как APK, что довольно интересно.
В моем блоге есть инструкции и патч для кросс-компиляции Python 2.7.2 для Android.
Я также открыл Ignifuga , мой 2D Game Engine. Он основан на Python / SDL и кросс-компилируется для Android. Даже если вы не используете его для игр, вы можете получить полезные идеи из утилиты для кода или сборщика (по имени Шейфер , в честь Тима ... вы знаете, кто).
SL4A делает то, что вы хотите. Вы можете легко установить его прямо на свое устройство со своего сайта, и не требовать рута.
Он поддерживает ряд языков. Питон самый зрелый. По умолчанию он использует Python 2.6, но вместо него есть порт 3.2 . Я использовал этот порт для всех видов вещей на Galaxy S2, и он работал нормально.
SL4A предоставляет порт своей android
библиотеки для каждого поддерживаемого языка. Библиотека предоставляет интерфейс к базовому API Android через один Android
объект.
from android import Android
droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade
Каждый язык имеет почти одинаковый API. Вы даже можете использовать JavaScript API внутри веб-просмотров.
let droid = new Android();
droid.ttsSpeak("hello from js");
Для пользовательских интерфейсов у вас есть три варианта:
Вы можете смешивать параметры, чтобы иметь возможность просматривать веб-интерфейс для основного интерфейса и при этом использовать собственные диалоги.
Существует сторонний проект с именем QPython . Он основан на SL4A и добавляет некоторые другие полезные вещи.
QPython предоставляет вам более удобный пользовательский интерфейс для управления вашей установкой и включает небольшой сенсорный редактор кода, оболочку Python и оболочку PIP для управления пакетами. У них также есть порт Python 3. Обе версии доступны в магазине Play, бесплатно. QPython также связывает библиотеки из множества Python для проектов Android, включая Kivy, так что это не просто SL4A.
Обратите внимание, что QPython по-прежнему разрабатывает свой форк SL4A (хотя, честно говоря, не так много). Основной проект SL4A сам по себе практически мертв.
Как любитель Python и Android-программист, мне грустно говорить, что это плохой путь. Есть две проблемы:
Одна из проблем заключается в том, что инструменты разработки для Android - это нечто большее, чем просто язык программирования. Многие графические элементы Android используют файлы XML для настройки дисплея, аналогично HTML. Встроенные объекты Java интегрированы с этим макетом XML, и гораздо проще, чем писать код, перейти от логики к растровому изображению.
Другая проблема заключается в том, что G1 (и, возможно, другие устройства Android на ближайшее будущее) не так быстры. Процессоры 200 МГц и оперативная память очень ограничены. Даже в Java вы должны сделать приличное количество переписывания, чтобы избежать создания большего количества объектов, если вы хотите сделать свое приложение идеально гладким. Python будет слишком медленным на мобильных устройствах.
Я хотел добавить к тому, что @JohnMudd написал о Киви. Прошли годы с тех пор, как он описал ситуацию, и Киви существенно изменилась.
Самым большим преимуществом Kivy, на мой взгляд, является его кроссплатформенная совместимость. Вы можете кодировать и тестировать все, используя любую среду рабочего стола (Windows / * nix и т. Д.), А затем упаковать свое приложение для ряда различных платформ, включая Android, iOS, MacOS и Windows (хотя приложениям часто не хватает встроенного внешнего вида).
С помощью собственного языка Kivy KV вы можете легко кодировать и создавать интерфейс GUI (он похож на Java XML, но не на TextView и т. Д. KV имеет свой собственный ui.widgets
аналогичный перевод), что, на мой взгляд, довольно легко принять.
В настоящее время Buildozer и python-for-android являются наиболее рекомендуемыми инструментами для сборки и упаковки ваших приложений. Я попробовал их обоих и могу твердо сказать, что они делают создание приложений для Android с Python быстрым. Их руководства также хорошо документированы.
iOS - еще один большой аргумент в пользу Kivy. Вы можете использовать ту же базу кода с небольшими изменениями, необходимыми с помощью инструментов kivy-ios Homebrew, хотя Xcode требуется для сборки перед запуском на их устройствах (AFAIK, iOS Simulator в XCode в настоящее время не работает для сборки x86-архитектуры) , Есть также некоторые проблемы с зависимостями, которые должны быть вручную скомпилированы и разобраны в Xcode для успешной сборки, но их не будет слишком сложно решить, и люди из Kivy Google Group тоже очень полезны.
Учитывая все это, пользователи с хорошими знаниями Python не должны иметь проблем с быстрым освоением основ.
Если вы используете Kivy для более серьезных проектов, вы можете счесть существующие модули неудовлетворительными. Тем не менее, есть несколько реальных решений. С помощью (в процессе разработки) pyjnius для Android и pyobjus пользователи теперь могут получить доступ к классам Java / Objective-C для управления некоторыми нативными API.
ScreenManager
как это сэкономит вам массу времени. Также советую прочитать их список рассылки, группа знающих людей, готовых помочь вам.
Вы можете использовать приложение Termux , которое предоставляет среду POSIX для Android, для установки Python.
Обратите внимание, что apt install python
Python3 будет установлен на Termux. Для Python2 вам нужно использовать apt install python2
.
Не сейчас, и вам повезет, что Jython скоро заработает. Если вы планируете начать разработку прямо сейчас, вам лучше сейчас просто придерживаться Java.
Используя SL4A (о котором уже говорилось в других ответах), вы можете запустить полноценный экземпляр web2py (другие веб-фреймворки python также являются вероятными кандидатами). SL4A не позволяет вам создавать собственные компоненты пользовательского интерфейса (кнопки, полосы прокрутки и т. П.), Но поддерживает WebView . WebView - это в основном не более чем урезанный веб-браузер, направленный на фиксированный адрес. Я считаю, что родное приложение Gmail использует WebView вместо обычного маршрута виджетов.
Этот маршрут будет иметь некоторые интересные особенности:
Я использую приложение QPython . Это бесплатно и включает в себя редактор кода, интерактивный интерпретатор и менеджер пакетов, что позволяет вам создавать и выполнять программы Python прямо на вашем устройстве.
С сайта Python для Android :
Python для android - это проект по созданию собственного дистрибутива Python, включающего в себя необходимые модули, и создания apk, включающего python, libs и ваше приложение.
Chaquopy - это плагин для системы сборки Android Studio, основанной на Gradle. Он ориентирован на тесную интеграцию со стандартными инструментами разработки Android.
Он предоставляет полные API для вызова Java из Python или Python из Java , что позволяет разработчику использовать любой язык, который лучше всего подходит для каждого компонента их приложения.
Он может автоматически загружать пакеты PyPI и встраивать их в приложение, включая выбранные собственные пакеты, такие как NumPy.
Он обеспечивает полный доступ ко всем API-интерфейсам Android из Python, в том числе к инструментарию собственного интерфейса пользователя ( пример действия чисто Python ).
Это коммерческий продукт, но он бесплатный для использования с открытым исходным кодом и всегда будет таким.
(Я создатель этого продукта.)
Еще одна попытка: https://code.google.com/p/android-python27/
Этот встраивает непосредственно интерпретатор Python в ваше приложение apk.
Вот некоторые инструменты, перечисленные на официальном сайте Python
В playstore есть приложение под названием QPython3, которое можно использовать как для редактирования, так и для запуска скрипта python.
Другое приложение под названием Termux, в котором вы можете установить python с помощью команды
pkg install python
Если вы хотите разрабатывать приложения, есть 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.
Вы также можете проверить PySide для Android , который на самом деле является привязками Python для Qt 4.
Существует платформа под названием PyMob, где приложения могут быть написаны исключительно на Python, а поток инструментов компилятора (PyMob) преобразует их в исходные коды для различных платформ.
Также проверьте Python для 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.
Попробуйте Chaquopy Python SDK для Android
Anddd ... Пчела
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.
Вы можете использовать QPython :
Он имеет консоль Python, редактор, а также управление пакетами / установщики
Это проект с открытым исходным кодом с реализациями Python 2 и Python 3. Вы можете скачать исходный код и файлы Android .apk прямо с github.
QPython 2: https://github.com/qpython-android/qpython/releases
QPython 3: https://github.com/qpython-android/qpython3/releases
Другой вариант, если вы ищете 3.4.2 или 3.5.1, это архив на GitHub.
Python3-Android 3.4.2 или Python3-Android 3.5.1
В настоящее время он поддерживает Python 3.4.2 или 3.5.1 и 10d версию NDK. Он также может поддерживать 3,3 и 9с, 11с и 12
Приятно, что вы просто скачиваете его, запускаете make и получаете .so или .a
В настоящее время я использую это для запуска сырого Python на устройствах Android. С парой модификаций в файлах сборки вы также можете сделать x86 и armeabi 64 битными
Я не видел этого здесь, но вы можете сделать это с помощью Pyside и Qt теперь, когда Qt работает на Android благодаря Necessitas.
В данный момент это кажется довольно сложным делом, но в конечном итоге может оказаться жизнеспособным маршрутом ...
Похоже, еще одна опция - это pyqtdeploy, которая ссылается на документы:
инструмент, который в сочетании с другими инструментами, предоставляемыми в Qt, позволяет развертывать приложения PyQt4 и PyQt5, написанные на Python v2.7 или Python v3.3 или новее. Он поддерживает развертывание на настольные платформы (Linux, Windows и OS X) и на мобильные платформы (iOS и Android).
Согласно Развертыванию приложения PyQt5 на Android через pyqtdeploy и Qt5, оно активно разрабатывается, хотя трудно найти примеры работающих приложений для Android или руководство по кросс-компиляции всех необходимых библиотек для Android. Это интересный проект, чтобы иметь в виду, хотя!
Посмотрите на BeeWare . На момент ответа на этот вопрос он все еще находится на ранней стадии разработки. Его целью является создание собственных приложений на Python для всех поддерживаемых операционных систем, включая Android.
Посмотрите на enaml-native, который использует концепцию реагирования и применяет ее к python.
Он позволяет пользователям создавать приложения с родными виджетами Android и предоставляет API для использования библиотек Android и Java из Python.
Он также интегрируется с android-studio и имеет несколько приятных функций dev, таких как перезагрузка кода и удаленная отладка.