Есть ли способ запустить Python на Android?
Мы работаем над версией S60, и на этой платформе есть хороший API Python.
Один из способов – использовать Kivy :
Библиотека Python с открытым исходным кодом для быстрой разработки приложений, использующих инновационные пользовательские интерфейсы, такие как приложения с несколькими касаниями.
Kivy работает на Linux, Windows, OS X, Android и iOS. Вы можете запустить такой же код [python] на всех поддерживаемых платформах.
Приложение Kivy Showcase
Существует также проект Android Scripting Environment (ASE). Он выглядит потрясающе, и он имеет некоторую интеграцию с родными компонентами Android.
Пример через Matt Cutts – «вот сканер штрих-кода, написанный в шести строках кода Python:
Там также есть SL4A, написанный сотрудниками Google.
«Подраздел Pygame для Android – это порт подмножества функций Pygame для платформы Android. Цель проекта – создать Android-специфические игры и упростить перенос игр с ПК-подобных платформ на Android «.
Примеры включают полную игру, упакованную в APK, что довольно интересно.
Я опубликовал инструкции и патч для перекрестного компиляции Python 2.7.2 для Android, вы можете получить его в моем блоге здесь: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android /
Как любитель Python и Android-программист, мне грустно говорить, что это не очень хороший способ. Есть две проблемы.
Одна из проблем заключается в том, что для инструментов разработки Android существует намного больше, чем просто язык программирования. Большая часть графики Android включает файлы XML для настройки дисплея, аналогичные HTML. Встроенные объекты Java действительно интегрированы с этим XML-макетом, и это намного проще, чем писать собственный код, чтобы перейти от логики к растровому изображению.
Другая проблема заключается в том, что G1 (и, вероятно, другие устройства Android для ближайшего будущего) действительно не так быстр. 200 МГц и RAM очень ограничены. Даже в Java вы должны сделать приличное количество переписывания, чтобы избежать большего создания объектов, если вы хотите сделать ваше приложение совершенно гладким. Python будет слишком медленным на некоторое время на мобильных устройствах.
Сценарий Scripting Layer для Android делает то, что вы хотите. Вы можете легко установить его прямо на свое устройство со своего сайта и не нуждаться в корне.
Каждый язык имеет практически тот же API. Вы даже можете использовать JavaScript API внутри webviews.
Пользовательские интерфейсы
Для пользовательских интерфейсов у вас есть три варианта:
Вы можете смешивать параметры, поэтому вы можете иметь веб-интерфейс для основного интерфейса и по-прежнему использовать собственные диалоги.
QPython
QPython дает вам более удобный интерфейс для управления вашей установкой и включает в себя небольшой редактор кода сенсорного экрана, оболочку Python и оболочку PIP для управления пакетами. Они также имеют порт Python 3. Обе версии доступны в Play Store бесплатно. QPython также связывает библиотеки из группы Python в проектах Android, включая Kivy, поэтому это не просто SL4A.
Обратите внимание, что QPython по-прежнему развивает свою вилку SL4A (хотя и не очень, если честно). Сам проект SL4A в значительной степени мертв.
Не сейчас, и вам повезет, что скоро Jython начнет работать. Если вы планируете начать разработку сейчас, вам будет лучше с тем, чтобы придерживаться Java на данный момент.
Этот маршрут будет иметь некоторые интересные особенности:
Я хочу опубликовать это как расширение того, что @JohnMudd уже ответил ( но, пожалуйста, расскажите мне, как английский не мой первый язык )
С собственным KV- языком Kivy можно легко легко конструировать и легко создавать интерфейс GUI (это похоже на Java XML, но вместо TextView и т. Д., У KV есть свои ui.widgets для аналогичного перевода), что, на мой взгляд, Довольно легко принять.
В настоящее время Buildozer и python для Android являются наиболее рекомендуемыми инструментами для создания / упаковки ваших приложений. Попробовав их обоих, я могу с уверенностью сказать, что они создают для Android приложения с Python. Пользователи, которые чувствуют себя комфортно в своих консольных / терминальных / командных приглашениях, не должны иметь проблем с их использованием, а их руководства также хорошо документированы.
При всем том, что пользователи с хорошим знанием Python не должны беспокоиться о том, чтобы собрать основы в неделях (если не дни), чтобы создать несколько простых приложений.
Иногда ваше приложение требует функциональности, которая выходит за рамки того, что может предоставить Kivy. В этих случаях необходимо обращаться к внешним библиотекам программного обеспечения. Учитывая богатство экосистемы Python, уже существует большое количество программных библиотек, которые вы можете просто импортировать и использовать сразу.
Мой опыт работы в Kivy заключается в том, что он будет лучше всего соответствовать сезонным программистам на Python и некоторому серьезному программисту, который хочет быстрой разработки или простого обслуживания базы кода. Он хорошо работает на нескольких платформах, хотя и не на уровне собственного чувства.
Я надеюсь, что больше программистов Python / app найдут мою небольшую информацию полезной и начнут смотреть на Kivy, она может только улучшиться (с большим количеством поддержки и библиотек / модулей портироваться), если у сообщества есть большие интересы.
PSI не имеет никаких отношений с Kivy, я всего лишь программист, которому действительно нравится идея привлекать Python-кодирование к мобильной / кросс-платформенной разработке.
С сайта Python для android :
Python для android – это проект для создания собственного дистрибутива Python, включая модули, которые вы хотите, и создания apk, включая python, libs и ваше приложение.
Это встраивает непосредственно интерпретатор Python в ваше приложение apk.
Вы можете изучить примеры python для sl4a.
Также есть python-on-a-chip, возможно, работает mosync: google group
Не видел этого, опубликованного здесь, но вы можете сделать это с Pyside и Qt, теперь Qt работает на Android благодаря Necessitas.
В настоящий момент это похоже на kludge, но в конечном итоге может стать жизнеспособным маршрутом …
Другим вариантом, если вы ищете 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 и 9c, 11c и 12
В настоящее время я использую это для запуска raw Python на устройствах Android. С помощью нескольких модификаций файлов сборки вы также можете сделать x86 и armeabi 64 бит
Вы можете использовать приложение Termux :
Обратите внимание, что apt install python install python 3. для python 2 вы вызываете apt install python2.
Вы можете использовать QPython :
Он имеет консоль Python, редактор, а также управление пакетами / инсталляторы
В playstore есть приложение под названием QPython3, которое можно использовать для редактирования и запуска скрипта python.
Другое приложение, называемое Termux, в котором вы можете установить python с помощью команды
Еще одним вариантом является pyqtdeploy, который ссылается на документы:
Инструмент, который вместе с другими инструментами, поставляемыми с Qt, позволяет развертывать приложения PyQt4 и PyQt5, написанные с помощью Python v2.7 или Python v3.3 или новее. Он поддерживает развертывание на настольных платформах (Linux, Windows и OS X) и на мобильных платформах (iOS и Android).
Согласно развертыванию приложения PyQt5 на Android через pyqtdeploy и Qt5, он активно развивается, хотя трудно найти примеры работающих приложений для Android или учебник о том, как перекрестно скомпилировать все необходимые библиотеки на Android. Это интересный проект, который нужно помнить!
Есть ли способ запустить Python на Android?
Мы работаем над версией S60, и у этой платформы есть хороший Python API.
Одним из способов является использование Kivy :
Библиотека Python с открытым исходным кодом для быстрой разработки приложений, использующих инновационные пользовательские интерфейсы, такие как приложения multi-touch.
Kivy работает на Linux, Windows, OS X, Android и iOS. Вы можете запустить один и тот же код [python] на всех поддерживаемых платформах.
Существует также новый проект Android Scripting Environment (ASE / SL4A). Он выглядит потрясающе и имеет некоторую интеграцию с нативными компонентами Android.
Примечание: больше не находится под «активной разработкой», но некоторые вилки могут быть.
Pygame Subset для Android
. порт подмножества функциональных возможностей Pygame для платформы Android. Целью проекта является создание игр для Android и упрощение портирования игр с платформ, подобных ПК, на Android.
Примеры включают в себя полную игру, упакованную как APK, что довольно интересно.
Кросс-компиляция и Игнифуга
В моем блоге есть инструкции и патч для кросс-компиляции Python 2.7.2 для Android.
Сценарий для Android
SL4A делает то, что вы хотите. Вы можете легко установить его прямо на свое устройство со своего сайта, и не требовать рута.
SL4A предоставляет порт своей android библиотеки для каждого поддерживаемого языка. Библиотека предоставляет интерфейс к базовому API Android через один Android объект.
Каждый язык имеет почти одинаковый API. Вы даже можете использовать JavaScript API внутри веб-просмотров.
Пользовательские интерфейсы
Для пользовательских интерфейсов у вас есть три варианта:
Вы можете смешивать параметры, чтобы иметь возможность просматривать веб-интерфейс для основного интерфейса и при этом использовать собственные диалоги.
QPython
QPython предоставляет вам более удобный пользовательский интерфейс для управления вашей установкой и включает небольшой сенсорный редактор кода, оболочку Python и оболочку PIP для управления пакетами. У них также есть порт Python 3. Обе версии доступны в магазине Play, бесплатно. QPython также связывает библиотеки из множества Python для проектов Android, включая Kivy, так что это не просто SL4A.
Обратите внимание, что QPython по-прежнему разрабатывает свой форк SL4A (хотя, честно говоря, не так много). Основной проект SL4A сам по себе практически мертв.
Полезные ссылки
Как любитель Python и Android-программист, мне грустно говорить, что это плохой путь. Есть две проблемы:
Другая проблема заключается в том, что 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 быстрым. Их руководства также хорошо документированы.
Учитывая все это, пользователи с хорошими знаниями Python не должны иметь проблем с быстрым освоением основ.
Если вы используете Kivy для более серьезных проектов, вы можете счесть существующие модули неудовлетворительными. Тем не менее, есть несколько реальных решений. С помощью (в процессе разработки) pyjnius для Android и pyobjus пользователи теперь могут получить доступ к классам Java / Objective-C для управления некоторыми нативными API.
Как разрабатывать на Python под Android
Авторизуйтесь
Как разрабатывать на Python под Android
Рассказывает Александр Тейлор, разработчик проекта Kivy
В последнее время появляется большое количество ресурсов по разработке на Python под Android. Все чаще упоминается предназначенный для этой задачи фреймворк Kivy (и его ответвления), ведь он является одним из самых проверенных временем и надежных проектов в этой области. Тем не менее, одну важную деталь незаслуженно обделяют вниманием — что вообще мы сможем делать после того, как Python станет запускаться на устройстве? Есть ли какие-то ограничения? Все ли библиотеки можно подключать? Возможно ли делать все то же, что и при написании приложения на Java? Данные вопросы волнуют многих, и они рассматриваются и решаются в рамках проекта Kivy. В этой статье я постараюсь рассмотреть наиболее интересные и важные детали.
Python-for-android
Прежде всего давайте посмотрим на то, с помощью чего Python получает возможность работать под Android — инструмент, названный, как ни странно, python-for-android. Его основная функция состоит в том, чтобы создать дистрибутив — папку проекта, содержащую все необходимое для запуска вашего приложения. А точнее, сам интерпретатор, Kivy и библиотеки, от которых он зависит: Pygame, SDL и несколько других. Также дистрибутив включает в себя загрузчик Java, отображающий OpenGL и выступающий в качестве посредника между Kivy и операционной системой. Затем вы добавляете ко всему этому свои скрипты, настройки вроде иконки и имени, компилируете с помощью Android NDK и вуаля — APK с вашим приложением готов!
И это всего лишь базовая процедура, на самом деле сгенерированный пакетный файл может включать (и включает) в себя гораздо больше. Вместе со всем прочим в APK вшивается большая часть стандартной библиотеки, а любой сторонний модуль, написанный на Python, может быть легко добавлен — все так же, как и при разработке десктоп-приложений. Добавка модулей с компилируемыми компонентами тоже не вызывает трудностей, необходимо лишь указать, как их нужно собирать. Как правило, это не представляет собой ничего сложного, достаточно лишь поставить пару галочек перед запуском процедуры сборки, хотя в редких отдельных случаях могут понадобиться дополнительные действия. Python-for-android уже включает в себя указания для компиляции таких популярных модулей, как: numpy, sqlite3, twisted и даже django!
Вышеописанные принципы лишь в общих словах объясняют, как работает python-for-android. В любой момент вы можете получить больше информации на данную тему, заглянув в документацию Kivy. Я рекомендую вам Buildozer — надстройку для python-for-android, предоставляющую собой удобный интерфейс и автоматическое разрешение некоторых зависимостей. Мы стараемся сделать так, чтобы написанная выше цепочка действий использовалась не только в Kivy, но и в других проектах. Основной процесс сборки останется таким же, но нужда в загрузчике Java отпадет, так как он необходим только для поддержки некоторых специфичных нужд фреймворка.
Обращение к Android API с помощью PyJNIus
Взаимодействие с Android API: получение информации с сенсоров, создание уведомлений, вибрация, пауза и перезапуск, да что угодно — важная часть вашего приложения. Kivy за вас позаботится об основном, но многими вещами вы захотите управлять сами. Для этого создан PyJNIus — инструмент, автоматически оборачивающий код на Java в интерфейс Python.
4–5 декабря, Онлайн, Беcплатно
В качестве простого примера приведем программу, которая заставит телефон вибрировать на протяжении 10 секунд:
Если вы знакомы с Android API, то без труда заметите, что код выше очень похож на аналогичный на Java — PyJNIus просто позволяет нам обращаться к тому же API, но прямо из Python. Большая часть Android API может быть вызвана подобным образом, что позволяет достичь того же функционала, что и при разработке на Java.
Главный минус PyJNIus в том, что он требует неплохого понимания структуры Android API, а код выходит громоздким, хотя его эквивалент на Java выглядит точно так же. Для решения этой проблемы Kivy включает в себя Plyer.
Plyer: кроссплатформенное API для платформоспецифичных задач
Проект Plyer ставит себе цель создать простой «питоничный» интерфейс для функций, которые присутствуют на большинстве платформ. Например, код выше легким движением руки превращается в…
Более того, написанный код попытается выполнить свою задачу на всех поддерживаемых Plyer платформах — на данный момент это: Android, iOS, Linux, Windows и OS X (для iOS также существует аналог PyJNIus, называемая PyOBJus). На самом деле, вибрация — не самый лучший пример, потому что сейчас она реализована только для Android, но такие функции как проверка уровня заряда батареи:
— работают как в десктопных, так и в мобильных приложениях, а получение данных с компаса/гироскопа и отправка SMS без проблем реализуются на Android и iOS.
Plyer находится на начальной стадии развития, так что любая помощь в разработке приветствуется. Также, мы участвуем с ним в Google Summer of Code в этом году.
Не только ради Kivy
Все вышеперечисленные инструменты были разработаны для нашего фреймворка, но на самом деле они больше предназначены для разработки под Python в целом. В Plyer мы специально избегаем какой-либо зависимости от Kivy, а PyJNIus нужен лишь для доступа к Android JNI. Искренне надеемся, что эти инструменты станут полезны для любого, кто пишет на Python под Android. Вы уже можете попробовать PyJNIus, используя QPython. Python-for-android больше завязан на взаимодействии с Kivy, но мы будем рады обсудить этот вопрос.
Многое можно реализовать при разработке на Android с помощью Python, несмотря на все различия с Java, которая предназначена для этого, но эти возможности могут быть расширены еще больше в ближайшем будущем. И если вы заинтересовались описанными выше проектами, то самое время присоединиться к нашей команде!




