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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

Примечание: больше не поддерживается "активная разработка", но некоторые вилки могут быть.

Ответ 3

Да! : Среда сценариев Android

Пример через Мэтта Каттса через 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)

Ответ 4

Там также SL4A, написанный сотрудниками Google.

Ответ 5

" Pygame Subset для Android - это порт подмножества функций Pygame для платформы Android. Цель проекта - разрешить создание Android-специфических игр и облегчить перенос игр с ПК-подобных платформ на Android".

Примеры включают полную игру, упакованную в APK, что довольно интересно.

Ответ 6

Я опубликовал инструкции и патч для перекрестного компиляции Python 2.7.2 для Android, вы можете получить его в моем блоге здесь: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

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

Ответ 7

Сценарий для Android

SL4A делает то, что вы хотите. Вы можете легко установить его прямо на свое устройство со своего сайта, и вам не нужен root.

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

API

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");

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

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

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

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

QPython

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

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

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

Полезные ссылки

Ответ 8

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

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

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

Ответ 9

Kivy


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

С тех пор прошло много лет, и Киви превратилась в v1.9-dev. Самым большим преимуществом Kivy, на мой взгляд, является его кроссплатформенная совместимость. Вы можете кодировать и тестировать в своей локальной среде (Windows/* nix и т.д.), Вы также можете создавать, отлаживать и упаковывать приложение для запуска на устройствах Android/iOS/Mac/Windows.

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

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

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

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

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

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

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

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

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

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

Ответ 10

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

Ответ 11

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

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

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

Ответ 12

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

Ответ 14

На веб-сайте Python для android:

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

Ответ 16

Chaquopy

Chaquopy - это плагин для системы сборки Android Studio Gradle. Он ориентирован на тесную интеграцию со стандартными инструментами разработки Android.

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

  • Он может автоматически загружать пакеты PyPI и встраивать их в приложение, включая выбранные собственные пакеты, такие как NumPy.

  • Он обеспечивает полный доступ ко всем API-интерфейсам Android из Python, в том числе к инструментарию собственного интерфейса пользователя (пример действия чисто Python).

Это коммерческий продукт, но он бесплатный для использования с открытым исходным кодом и всегда будет таким.

(Я создатель этого продукта.)

Ответ 17

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

Playstore ссылка

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

pkg install python

Playstore Link

Если вы хотите разрабатывать приложения, есть 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) преобразует их в исходные коды для различных платформ.

Ответ 18

Там также Python-на-чипе, возможно, работает Mosync: группа Google

Ответ 19

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

Вы можете узнать примеры p440 Python.

Ответ 20

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

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

http://qpython.com/

Это проект с открытым исходным кодом с реализациями 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

Ответ 21

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

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

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

Ответ 22

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

Ответ 23

Похоже, еще одна опция - это pyqtdeploy, которая ссылается на документы:

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

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

Ответ 24

Существует несколько способов использования Python на Android.

BeeWare - это набор инструментов для создания пользовательских интерфейсов

Chaquopy - это плагин для системы сборки на базе Android Studio Gradle.

Kivy - это кросс-платформенный инструментарий пользовательского интерфейса на основе OpenGL.

pyqtdeploy - это инструмент для развертывания приложений PyQt.

QPython - это среда и среда разработки script на устройстве.

SL4A (Scripting Layer для Android), первоначально названный ASE (среда разработки скриптов Android), является набор "фасадов", которые предоставляют значительно упрощенное подмножество API Android.

PySide (привязка Python для инструментария Qt) имеет некоторую предварительную поддержку для Android.

Хотя основным языком программирования Android является Java, на платформе нет известного порта Jython. Поддержка Android в BeeWare достигается с помощью VOC - инструмента, который компилирует исходный код Python в файлы классов Java. Это позволяет выполнять код Python как родной двоичный файл на JVM. https://wiki.python.org/moin/Android

Ответ 25

Посмотрите на BeeWare. На момент ответа на этот вопрос он все еще находится на ранней стадии разработки. Его целью является создание собственных приложений на Python для всех поддерживаемых операционных систем, включая Android.

Ответ 26

Посмотрите enaml-native, которая использует концепцию реагирования и применяет ее к python.

Он позволяет пользователям создавать приложения с родными виджетами Android и предоставляет API для использования библиотек Android и Java из Python.

Он также интегрируется с android-studio и предоставляет несколько полезных функций разработчика, таких как перезагрузка кода и удаленная отладка.

Ответ 27

Вы можете использовать SL4A.

Загрузить SL4A

Вот базовая инструкция для запроса python на android.
1. Загрузите приложение SL4A, например, sl4a-r6.1.1-arm-debug.apk
2. Загрузите приложение Py4A, например PythonForAndroid-debug.apk
3. Включите "Неизвестные источники" в настройках вашего устройства.