Есть ли способ запустить Python на Android?

Мы работаем над версией S60, и на этой платформе есть хороший API Python.

Тем не менее, в Python нет ничего официального на Android, но, поскольку существует Jython , есть ли способ позволить змее и роботу работать вместе?

Один из способов – использовать Kivy :

Библиотека Python с открытым исходным кодом для быстрой разработки приложений, использующих инновационные пользовательские интерфейсы, такие как приложения с несколькими касаниями.

Kivy работает на Linux, Windows, OS X, Android и iOS. Вы можете запустить такой же код [python] на всех поддерживаемых платформах.

Приложение Kivy Showcase

Существует также проект Android Scripting Environment (ASE). Он выглядит потрясающе, и он имеет некоторую интеграцию с родными компонентами Android.

ДА!

Пример через Matt Cutts – «вот сканер штрих-кода, написанный в шести строках кода 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) 

Там также есть 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 /

EDIT: у меня есть открытый источник Ignifuga , мой 2D-игровой движок, это Python / SDL, и это кросс-компиляция для Android. Даже если вы не используете его для игр, вы можете получить полезные идеи из кода и утилиты builder (по имени Шафер, после Тима … вы знаете, кто).

Как любитель Python и Android-программист, мне грустно говорить, что это не очень хороший способ. Есть две проблемы.

Одна из проблем заключается в том, что для инструментов разработки Android существует намного больше, чем просто язык программирования. Большая часть графики Android включает файлы XML для настройки дисплея, аналогичные HTML. Встроенные объекты Java действительно интегрированы с этим XML-макетом, и это намного проще, чем писать собственный код, чтобы перейти от логики к растровому изображению.

Другая проблема заключается в том, что G1 (и, вероятно, другие устройства Android для ближайшего будущего) действительно не так быстр. 200 МГц и RAM очень ограничены. Даже в Java вы должны сделать приличное количество переписывания, чтобы избежать большего создания объектов, если вы хотите сделать ваше приложение совершенно гладким. Python будет слишком медленным на некоторое время на мобильных устройствах.

SL4A

Сценарий Scripting Layer для Android делает то, что вы хотите. Вы можете легко установить его прямо на свое устройство со своего сайта и не нуждаться в корне.

Он поддерживает ряд языков; Python – самый зрелый. По умолчанию он использует Python 2.6, но вместо этого вы можете использовать 3,2 порта . Я использовал этот порт для всех вещей на Galaxy S2, и он отлично работал.

API

SL4A предоставляет порт своей библиотеки android для каждого поддерживаемого языка. Библиотека предоставляет интерфейс для базового Android API через один объект Android .

 import android droid = android.Android() # example using the text to speech facade droid.ttsSpeak('hello world') 

Каждый язык имеет практически тот же API. Вы даже можете использовать JavaScript API внутри webviews.

 var droid = new Android(); droid.ttsSpeak('hello from js'); 

Пользовательские интерфейсы

Для пользовательских интерфейсов у вас есть три варианта:

  • Вы можете легко использовать общие, родные диалоги и меню через API. Это хорошо для диалогов подтверждения и других основных пользовательских входов.
  • Вы также можете открыть веб-представление из сценария Python, а затем использовать HTML5 для пользовательского интерфейса. Когда вы используете webviews из Python, вы можете передавать сообщения туда и обратно между веб-просмотром и процессом Python, который породил его. Пользовательский интерфейс не будет родным, но он по-прежнему остается хорошим вариантом.
  • Существует некоторая поддержка пользовательских интерфейсов для Android, но я не уверен, насколько это хорошо работает; Я просто никогда не использовал его.

Вы можете смешивать параметры, поэтому вы можете иметь веб-интерфейс для основного интерфейса и по-прежнему использовать собственные диалоги.

QPython

Существует сторонний проект с именем QPython . Он основывается на SL4A и бросает некоторые другие полезные вещи.

QPython дает вам более удобный интерфейс для управления вашей установкой и включает в себя небольшой редактор кода сенсорного экрана, оболочку Python и оболочку PIP для управления пакетами. Они также имеют порт Python 3. Обе версии доступны в Play Store бесплатно. QPython также связывает библиотеки из группы Python в проектах Android, включая Kivy, поэтому это не просто SL4A.

Обратите внимание, что QPython по-прежнему развивает свою вилку SL4A (хотя и не очень, если честно). Сам проект SL4A в значительной степени мертв.


Не сейчас, и вам повезет, что скоро Jython начнет работать. Если вы планируете начать разработку сейчас, вам будет лучше с тем, чтобы придерживаться Java на данный момент.

Используя SL4A (который уже упоминался отдельно в других ответах), вы можете запустить полномасштабный экземпляр web2py (другие потенциальные кандидаты на python также являются кандидатами). SL4A не позволяет вам создавать собственные компоненты пользовательского интерфейса (кнопки, полосы прокрутки и т. П.), Но поддерживает WebView . WebView – это не что иное, как полосатый веб-браузер, указывающий на фиксированный адрес. Я считаю, что родное приложение Gmail использует WebView вместо обычного маршрута виджетов.

Этот маршрут будет иметь некоторые интересные особенности:

  • В случае большинства веб-фреймворков python вы можете фактически разработать и протестировать, не используя Android-устройство или эмулятор Android.
  • Какой бы ни был код Python, который вы в конечном итоге пишете для телефона, можно также разместить на общедоступном веб-сервере с очень небольшой (если есть) модификацией.
  • Вы можете использовать все сумасшедшие веб-материалы: запрос, HTML5, CSS3 и т. Д.

Kivy


Я хочу опубликовать это как расширение того, что @JohnMudd уже ответил ( но, пожалуйста, расскажите мне, как английский не мой первый язык )

Прошло много лет с тех пор, и Kivy также эволюционировал до версии v.1.9-dev , самой большой точкой продаж Kivy, на мой взгляд, является ее кросс-платформенная совместимость, вы можете кодировать и тестировать в своей локальной среде (Windows / * nix и т. Д. .) , Вы также можете создавать, отлаживать и упаковывать приложение для работы на устройствах Android / iOS / Mac / Windows .

С собственным KV- языком Kivy можно легко легко конструировать и легко создавать интерфейс GUI (это похоже на Java XML, но вместо TextView и т. Д., У KV есть свои ui.widgets для аналогичного перевода), что, на мой взгляд, Довольно легко принять.

В настоящее время Buildozer и python для Android являются наиболее рекомендуемыми инструментами для создания / упаковки ваших приложений. Попробовав их обоих, я могу с уверенностью сказать, что они создают для Android приложения с Python. Пользователи, которые чувствуют себя комфортно в своих консольных / терминальных / командных приглашениях, не должны иметь проблем с их использованием, а их руководства также хорошо документированы.

Более того, iOS – еще одна важная точка продаж Kivy, при условии, что вы можете использовать ту же базу кода с небольшими изменениями, необходимыми для тестирования на вашем устройстве iOS , с помощью инструментов kivy-ios Homebrew, хотя Xcode необходимы для сборки перед запуском Их устройства (AFAIK iOS Simulator в Xcode в настоящее время не работает для сборки архитектуры x86). Также есть некоторые проблемы с зависимостями, которые необходимо вручную скомпилировать и использовать в Xcode, чтобы иметь успешную сборку, но не будет слишком сложно разрешить, и люди в Kivy Google Group тоже очень полезны.

При всем том, что пользователи с хорошим знанием Python не должны беспокоиться о том, чтобы собрать основы в неделях (если не дни), чтобы создать несколько простых приложений.

Также стоит упомянуть, что вы можете связывать (создавать рецепты) свои модули Python со сборкой, чтобы пользователи могли действительно использовать многие существующие библиотеки, которые Python приносит нам, например, Requests & PIL и т. Д. Через поддержку расширения Kivy .

Иногда ваше приложение требует функциональности, которая выходит за рамки того, что может предоставить Kivy. В этих случаях необходимо обращаться к внешним библиотекам программного обеспечения. Учитывая богатство экосистемы Python, уже существует большое количество программных библиотек, которые вы можете просто импортировать и использовать сразу.

Последнее, но не менее важно , если вы собираетесь использовать Kivy для более серьезных / коммерческих проектов, вы можете найти существующие модули, которые не соответствуют ожидаемым. Имеются также некоторые доступные решения: «работа продолжается» для pyjnius для Andoird и pyobjus , теперь пользователи могут получать доступ к классам Java / Objective-C через эти модули для управления некоторыми собственными API-интерфейсами.

Мой опыт работы в Kivy заключается в том, что он будет лучше всего соответствовать сезонным программистам на Python и некоторому серьезному программисту, который хочет быстрой разработки или простого обслуживания базы кода. Он хорошо работает на нескольких платформах, хотя и не на уровне собственного чувства.

Я надеюсь, что больше программистов Python / app найдут мою небольшую информацию полезной и начнут смотреть на Kivy, она может только улучшиться (с большим количеством поддержки и библиотек / модулей портироваться), если у сообщества есть большие интересы.

PSI не имеет никаких отношений с Kivy, я всего лишь программист, которому действительно нравится идея привлекать Python-кодирование к мобильной / кросс-платформенной разработке.

Я использую приложение QPython. У него есть редактор, консоль, и вы можете запускать с ним свои программы Python. Приложение бесплатное, а ссылка – http://qpython.com/ .

С сайта Python для android :

Python для android – это проект для создания собственного дистрибутива Python, включая модули, которые вы хотите, и создания apk, включая python, libs и ваше приложение.

Еще одна попытка: https://code.google.com/p/android-python27/

Это встраивает непосредственно интерпретатор Python в ваше приложение apk.

Вы можете запустить свой код Python с помощью sl4a . Sl4a поддерживает Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl и скрипт оболочки.

Вы можете изучить примеры python для sl4a.

Также есть python-on-a-chip, возможно, работает mosync: google group

Не видел этого, опубликованного здесь, но вы можете сделать это с Pyside и Qt, теперь Qt работает на Android благодаря Necessitas.

В настоящий момент это похоже на kludge, но в конечном итоге может стать жизнеспособным маршрутом …

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

Другим вариантом, если вы ищете 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

Приятно, что вы просто загружаете его, запускаете make и получаете .so или .a

В настоящее время я использую это для запуска raw Python на устройствах Android. С помощью нескольких модификаций файлов сборки вы также можете сделать x86 и armeabi 64 бит

Вы можете использовать приложение Termux :

Обратите внимание, что apt install python install python 3. для python 2 вы вызываете apt install python2.

Некоторые демонстрации здесь: https://www.youtube.com/watch?v=fqqsl72mASE

А также страницу github: https://github.com/termux

Вы можете использовать QPython :

Он имеет консоль Python, редактор, а также управление пакетами / инсталляторы

http://qpython.com/

Это проект с открытым исходным кодом с реализациями Python 2 и Python 3. Вы можете скачать исходный код и файлы .apk для Android непосредственно из github.

QPython 2: https://github.com/qpython-android/qpython/releases

QPython 3: https://github.com/qpython-android/qpython3/releases

В playstore есть приложение под названием QPython3, которое можно использовать для редактирования и запуска скрипта python.

Связь с PlayStore

Другое приложение, называемое Termux, в котором вы можете установить python с помощью команды

 packages install python 

PlayStore Link

Еще одним вариантом является pyqtdeploy, который ссылается на документы:

Инструмент, который вместе с другими инструментами, поставляемыми с Qt, позволяет развертывать приложения PyQt4 и PyQt5, написанные с помощью Python v2.7 или Python v3.3 или новее. Он поддерживает развертывание на настольных платформах (Linux, Windows и OS X) и на мобильных платформах (iOS и Android).

Согласно развертыванию приложения PyQt5 на Android через pyqtdeploy и Qt5, он активно развивается, хотя трудно найти примеры работающих приложений для Android или учебник о том, как перекрестно скомпилировать все необходимые библиотеки на Android. Это интересный проект, который нужно помнить!