QPython или Kivy для программирования Android с Python-производство устанавливаемых apk

прочитав несколько вопросов и ответов на SO, я понимаю, что у одного есть 2 варианта, т. е. QPython и Kivy для программирования для Android, однако, по-видимому, оба используют разные подходы. Я пытаюсь проверить свое понимание и посмотреть, не отсутствует ли у меня какая-то ключевая информация.

  • QPython позволяет использовать библиотеку Kivy для разработки графических приложений
  • QPython и Kivy оба используют SL4A, в то время как QPython расширил стандартный SL4A (или это привязки для Python) добавив некоторые NFC и аналогичные функции
  • QPython используется для создания скриптов python, которые могут использовать широкий спектр модулей, библиотек, но они должны QPython установлен для выполнения на целевом устройстве. Нет способа упаковать скрипт в apk.
  • Kivy OTOH, позволяет разработчику писать приложения, которые компилируются в apk, используя их облачную систему сборки (альтернативная локальная система сборки может быть настроена на Ubuntu Linux) [однако я заметил, что большая часть образца apk, которые используют Kivy, довольно большие, в диапазоне 40 МБ. Я что-нибудь пропустил ?]
  • QPython apk имеет 2 версии, т. е. один для Python-2.7 и другой для Python-3.X. Что касается киви, я не уверен, какая это версия.
  • пример сценария QPython (HelloWorld.py) похоже, ведет себя не так, как ожидалось, из последнего QPython-3.x с рынка, в системе Android Kitkat (4.4.2). Я получаю диалоговое окно для ввода текста, но затем я ожидаю всплывающего тоста, но ничего происходит.
  • создается впечатление, что QPython и Kivy разрабатываются одним разработчиком каждый (или только один человек действительно активен в настоящее время), и еще не имеют большого сообщества. [это моя самая большая проблема] Я заметил, что есть 3-4 вопроса с тегом "qpython" на SO, и более тысячи с "kivy"!
  • также создается впечатление, что в данный момент развитие Kivy несколько более активно( возможно, довольно активно), но для QPython я не иметь четкую картину.
  • киви, кажется, пытается расширить характер приложения, которое может быть написано с его помощью, по сравнению с QPython. Есть API, как плеер и pyjnius, которые помогают расширить возможности. Возможно, довольно значительно, по сравнению с QPython.
  • и QPython, и Kivy, похоже, находятся в стадии разработки. Сбой программы (/ script) (/failures), похоже, сообщается на обоих наборах инструменты.

в целом, мнение в результате (вышеуказанных пунктов), как представляется, качается в пользу киви, немного больше. Правильно ли понимание ? Я пропустил что-нибудь важное ? Это не риторический вопрос, и я ищу только фактические ответы.

2 ответов


QPython позволяет использовать библиотеку Kivy для разработки графических приложений

да, qpython-это интерпретатор + связанные инструменты и имеет хорошую интеграцию kivy. Вы не можете скомпилировать код kivy в автономный apk с помощью qpython+android.

QPython и Kivy оба используют SL4A, в то время как QPython расширил стандартный SL4A (или его привязки для Python), добавив некоторые NFC и аналогичные функции

Kivy не использует SL4A. Мы достигаем интеграции api android в основном через pyjnius, библиотеку для автоматической упаковки классов java С python, которая позволяет напрямую вызывать api java. Мы также абстрагируемся некоторые стандартные вещи для обновления интерфейса с плеер.

(Я видел, что вы уже нашли эти)

QPython используется для создания скриптов python, которые могут использовать широкий спектр модулей, библиотек, но для их выполнения требуется QPython целевое устройство. Нет способа упаковать скрипт в apk.

Я не использую qpython много, но я думаю, что это правильно, хотя в некоторых случаях могут быть некоторые инструменты, превращающие скрипты в apks (например, вы можете использовать инструменты сборки kivy, если у вас есть интерфейс kivy, или, возможно, sl4a имеет что-то для этого).

Kivy OTOH, позволяет разработчику писать приложения, которые компилируются в apk, используя их облачную систему сборки (альтернатива-локальная система сборки может быть настроен на Ubuntu Linux) [однако я заметил, что большинство образцов apk, которые используют Kivy, довольно большие, в диапазоне 40 МБ. Я что-нибудь пропустил ?]

у нас есть базовая облачная система сборки, но ничего подобного прямо сейчас, почти все строят apks на своей машине, используя наши инструменты сборки для android. Они работают на linux или OSX и при необходимости могут быть легко запущены на виртуальной машине.

минимальное приложение имеет размер около 7 МБ APK из-за необходимость связывания интерпретатора python и большого количества модулей.

QPython apk имеет 2 версии, т. е. один для Python-2.7 и другой для Python-3.X. Что касается киви, я не уверен, какая это версия.

Kivy сам поддерживает python3, но наши инструменты сборки android поддерживают только python2.Пока 7.

создается впечатление, что QPython и Kivy разрабатываются одним разработчиком каждый (или только один человек действительно активен в present), и еще не имеют большого сообщества. [Это моя самая большая проблема] я замечаю, что есть 3-4 вопроса с тегом "qpython" на SO и более тысячи с "kivy"!

развитие Kivy довольно активно с несколькими постоянными участниками плюс более спорадические. Вы можете увидеть, например, недавнее действие фиксации на github. Это, конечно, намного больше, чем один разработчик!

киви, кажется, пытается расширить природу из приложения, которое может быть написано с его помощью, сравните с QPython. Есть API, такие как plyer и pyjnius, которые помогают расширить возможности. Возможно, довольно значительно, по сравнению с QPython.

Я думаю, что qpython включает pyjnius. Не уверен в плеер.

Кажется, что QPython и Kivy находятся в стадии разработки. Сбой программы (/ script) (/failures), похоже, сообщается о обоих наборах инструментов.

Я не уверен, что вы смотрите, но любой нетривиальный проект будет иметь сбои/сбои/ошибки. Я не думаю, что киви особенно нестабильна по своей природе.

в целом, мнение в результате (вышеуказанных пунктов), похоже, качается в пользу киви, немного больше.

Я бы сказал, что qpython и kivy - совершенно разные вещи. Qpython позволяет писать и запускать скрипты, в то время как kivy-это графическая структура и связанные с ней инструменты для создания автономных приложений. Есть некоторые перекрываются с задачами, которые могут быть достигнуты с ними обоими, но также много вещей, где они не подходят - например, я думаю, что qpython, вероятно, гораздо удобнее делать быстрые скрипты без gui, например, для простой автоматизации (я думаю, что это возможно), тогда как я думаю, что kivy-гораздо лучший выбор для создания автономных приложений с нетривиальными guis. Конечно, вы можете написать код kivy в qpython, как обсуждалось, но это не большой пользовательский опыт для чего-либо нетривиального и вам нужен настольный компьютер/ноутбук в любом случае, чтобы сделать автономный apk.


есть, по крайней мере, еще два (хотя, насколько мне известно, только теоретические) способа получения кода Python на Android:

  • использовать языка Jython и преобразовать байт-код Java в Dalvik, как упоминалось везде. К сожалению, не все библиотеки CPython, например numpy для jython, и если вы используете библиотеки Java, имейте в виду, что Android не предоставляет те же самые, что, например, рабочий стол jre
  • использовать nuitka, который генерирует код C++ из вашего кода Python. Тогда используйте android-ndk.