Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

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

QPython apk имеет 2 версии i.e один для Python-2.7 и еще один для Python-3.x. Для Kivy я не уверен, какая версия.

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

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

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

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

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

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

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

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

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

Ответ 2

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

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