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

1666

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

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

  • 9
    Давайте проверим теорию Джоэла о возможности обновлений SO-сообщений с хорошими оценками в Google. Смотрите ниже или это: google-opensource.blogspot.com/2009/06/…
  • 47
    Я имею в виду обратное. Учитывая небольшое содержание этого поста, если он хорошо оценен, это должно быть огромным ожиданием. Я очень надеюсь на лучшее в этом проекте, я сам больше питонист, чем парень по Java, и кодирование Android с этим языком ускорит этап прототипирования.
Показать ещё 12 комментариев
Теги:
jython
ase

26 ответов

769
Лучший ответ

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

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

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

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

  • 44
    Если вы используете Kivy, вот инструмент, который поможет упаковать ваш проект в APK: github.com/kivy/python-for-android
  • 10
    @ Э- саб, Киви сработала для тебя? было ли это полезно? Я был бы очень благодарен, если бы вы могли поделиться своим опытом с Киви в моем вопросе :)
Показать ещё 9 комментариев
287

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

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

  • 66
    Да, но у них должна быть установлена ASE, это не решение, которое позволяет вам написать приложение для Android на python без чего-либо уже установленного (обычный пользователь будет всем, "что это за ASE?")
  • 18
    Кроме того, ASE является ограниченной средой; Вы не можете писать полноценные приложения для Android, даже если ASE уже установлена. См. Stackoverflow.com/questions/2076381
Показать ещё 3 комментария
176

ДА!

Пример через Matt Cutts через SL4A -" heres сканер штрих-кода, написанный в шести строках кода 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)
  • 40
    с / ДА / Мех. возможно / ... это чрезвычайно ограничено. что-нибудь графическое или мультитач? большое НЕТ.
  • 1
    @gcb вы не можете использовать обычный набор виджетов для Android, но вы можете использовать «webviews» (например, это то, что использует нативное приложение gmail).
Показать ещё 2 комментария
66

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

66

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

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

  • 3
    На моем Droid X было сломано несколько аспектов (кнопки или сенсорный экран, не помню), поэтому я не продвинулся слишком далеко с этим маршрутом.
60

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

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

  • 2
    Впечатляет. +1 за это. Не принято, потому что вы ничего не можете написать для публики с этим.
  • 0
    Если вы имеете в виду, что не можете создавать графические приложения с ним, вы, безусловно, можете, конечно, больше работать. Я на самом деле использую этот порт в сочетании с SDL 1.3, переходить от интерпретатора python к интерактивному приложению нетривиально, но это можно сделать.
52

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

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

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

  • 44
    На телефоне Android нет ни одного java-слова, оно компилируется в байт-код в процессе упаковки. Скорость не в этом: Google может предоставить инструменты для создания правильного байтового кода из кода Python (например, для Jython). Кстати, Dalvik - это не Java VM, поэтому речь идет не о Java VS Python.
  • 5
    Байт-код JAVA все еще должен обрабатываться JVM, а язык Java в любом случае требует сборщика мусора. Фактическая скорость может исходить только от C ++.
Показать ещё 5 комментариев
51

SL4A

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

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

API

SL4A предоставляет порт библиотеки android для каждого поддерживаемого языка. Библиотека предоставляет интерфейс для базового API Android через один объект 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 script, а затем использовать HTML5 для пользовательского интерфейса. Когда вы используете webviews из Python, вы можете пройти сообщений туда и обратно, между веб-просмотром и процессом Python, который породил его. Пользовательский интерфейс не будет родным, но он по-прежнему является хорошим вариантом для есть.
  • Существует некоторая поддержка для пользовательских пользовательских интерфейсов Android, но я не уверен, насколько хорошо он работает; Я просто никогда не использовал его.

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

QPython

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

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

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


  • 0
    Можете ли вы использовать любой из них для запуска скрипта Python из терминала или Tasker? Я не могу найти способ :(
  • 0
    Вы можете запустить скрипт SL4A из Tasker. На этой странице есть несколько примеров, в которых есть фрагменты Python, запускаемые из Tasker. Это действительно совсем другой вопрос.
29

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

24

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

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

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

Kivy


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

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

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

В настоящее время Buildozer и python-for-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 для Android и pyobjus. Теперь пользователи могут обращаться к классам Java/ Objective-C через эти модули для управления некоторыми собственными API-интерфейсами.

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

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

P.S. У меня нет никаких отношений с Киви, я просто программист, которому очень нравится идея принести удовольствие Python для мобильных/кросс-платформенных разработок.

  • 0
    Я только что скачал Kivy со своего сайта. Демонстрирует поддержку 32- и 64-битного Python 3.4 и демонстрацию работы сенсорного ввода.
  • 1
    @codeReview, я использую Kivy только с Python2 и у меня нет опыта работы с Python3, все работает нормально?
Показать ещё 3 комментария
18

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

  • 2
    Теперь в qpython добавлена поддержка Django! Это все что мне нужно! Удивительно!
17

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

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

  • 1
    @ E-удовлетворительно: спасибо за ваш комментарий. Я не вижу, какой ответ я дублирую. Я могу только догадываться, что вы думаете, что PFA такой же, как Kivy. Хотя он размещен в рамках проекта Kivy, вам даже не нужно использовать Kivy для использования PFA.
  • 0
    Проверьте удаленный ответ @ tito в нижней точке PFA. Кроме того, мало интереса к запуску PFA без kivy, так как это единственный инструмент, который вы получили.
Показать ещё 1 комментарий
14

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

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

8

Существует несколько способов использования 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

8

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

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

7

Кроме того, python-on-a-chip может запускать mosync: группа google

6

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

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

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

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

  • 2
    +1 для Termux. Абсолютно прекрасная среда для работы. Отличный выбор пакетов в репозиториях, удобные сочетания клавиш регулировки громкости. Это самая близкая вещь к Debian по телефону, который я когда-либо нашел.
6

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

6

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

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

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

5

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

ссылка Playstore

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

packages install python

Playstore Link

  • 2
    используя Termux, вы также можете установить python 2 $ apt install python2
4

Вы можете использовать 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

3

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

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

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

1

Chaquopy

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

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

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

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

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

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

0

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

0

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

Загрузить SL4A

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню