Как сделать Android-приложение полностью на Python? [закрыто]

107

Я хотел бы разработать (довольно простое) приложение для Android, которое будет распространяться через Play Store. Я хотел бы сделать это полностью на питоне. Однако онлайн-исследование меня не совсем просветило: большинство комментариев либо устарели (старше 1 года, и я чувствую, что с тех пор может быть улучшена интеграция python), либо они говорят о запуске python в android (например, здесь ).

Поэтому ищу информацию по вопросам:

  • возможно ли полностью разработать приложение на Python - и какие инструменты для этого есть? (Например, рекомендуется ли Киви?)
  • Если да, то в каких программных средах это лучше всего реализовать? (Я безуспешно пытался использовать Android Studio, но не смог найти способ запустить там код Python.)

Я новичок в разработке приложений и был бы очень признателен за любые попытки сделать это на python, а не на Jave и т.д., о которых я еще не знаю.

Большое спасибо за вашу помощь заранее.

Иво
источник
1
в прошлом я использовал kivy и их программу buildozer. у них есть документация здесь kivy.org/docs/guide/packaging-android.html
es
Изначально вы должны использовать Java или Kotlin, однако, как указывали другие, существуют сторонние «конструкторы приложений» или фреймворки, которые вы можете использовать с python, такие как PyMob или Kivy.
Доминик Шмидт
7
Я создал игру для Android, полностью разработанную на Python с использованием Kivy. Он называется CoinTex и доступен здесь, в Google Play: play.google.com/store/apps/details?id=coin.tex.cointexreactfast . Исходный код игры доступен здесь, на GitHub: github.com/ahmedfgad/CoinTex . Я также написал книгу, которая будет опубликована в этом году, о создании приложений для Android с использованием Python. Он называется «Создание приложений Android на Python с помощью Kivy с Android Studio: с Pyjnius, Plyer и Buildozer Ahmed Fawzy Gad», доступный здесь на Amazon: amazon.com/dp/1484250303 .
Ахмед Гад
1
Не могу опубликовать ответ, но здесь, похоже, есть решение : будут продемонстрированы различные технологии, в том числе графические интерфейсы QML на основе PySide с использованием порта Necessitas Qt и подхода на основе Py4A / SL4A, который можно объединить с Android WebKit и повторно -использовать веб-фреймворки Python.
Basj

Ответы:

115

Чтобы ответить на ваш первый вопрос: да, возможно разработать приложение для Android на чистом питоне , для этого я предлагаю вам использовать BeeWare , который представляет собой просто набор инструментов Python , которые очень хорошо работают вместе и позволяют вам разрабатывать платформенные нативные приложения на Python.

посмотрите это видео от создателя BeeWare, которое прекрасно объясняет и демонстрирует его применение

Как это устроено

Предпочтительным языком реализации Android является Java, поэтому, если вы хотите написать приложение Android на Python, вам необходимо иметь способ запускать код Python на виртуальной машине Java. Это то, что делает VOC . VOC - это транспилятор: он берет исходный код Python, компилирует его в байт-код CPython, а затем преобразует этот байт-код в Java-совместимый байт-код. Конечным результатом является то, что ваши файлы исходного кода Python компилируются непосредственно в файл Java .class, который можно упаковать в приложение Android.

VOC также позволяет вам получать доступ к собственным объектам Java, как если бы они были объектами Python, реализовывать интерфейсы Java с классами Python и создавать подклассы Java с классами Python. Используя это, вы можете написать Android-приложение непосредственно против нативных Android API.

После того, как вы написали собственное приложение для Android, вы можете использовать портфель для упаковки кода Python в виде приложения для Android.

Портфель - это инструмент для преобразования проекта Python в автономное собственное приложение. Вы можете упаковать проекты для:

  • Mac
  • Windows
  • Linux
  • iPhone / iPad
  • Android
  • AppleTV
  • tvOS.

Вы можете проверить это собственное приложение Android Tic Tac Toe, написанное на Python, с помощью пакета BeeWare. на GitHub

В дополнение к инструментам BeeWare вам потребуется установить JDK и Android SDK для тестового запуска вашего приложения.

и чтобы ответить на ваш второй вопрос: хорошей средой может быть все, что вам удобно, будь то текстовый редактор и командная строка или IDE, если вы ищете хорошую IDE для Python, я бы посоветовал вам попробовать Pycharm , в ней есть бесплатная версия для сообщества, аналогичная среде Android Studio, поскольку она была создана той же компанией.

Надеюсь, это было полезно

Maroof Shittu
источник
2
Это только у меня, или от VOC отказались?
Иск Фонда Моники
2
это тупик (последний раз проверял: декабрь 2018). Один или несколько компонентов в этом чрезмерно сложном решении больше не работают или не могут поддерживать себя в актуальном состоянии.
Берри Цакала
2
Это просто обновление на 2019 год, но Kotlin теперь является предпочтительным языком для разработки Android.
DaveTheMinion 04
3
@Basj Я хотел бы сказать, что Beeware определенно будет на какое-то время, потому что, просто взглянув на его учетную запись GitHub, вы обнаружите, что она активно развивается, и если вы перейдете на канал Gitter, вы можете всегда доходят до всей команды, особенно доктора Рассела (freakyboy), создателя, и сообщество довольно дружелюбное, а также совсем недавно (26 сентября 2019 г.) из их официального аккаунта был опубликован твит, в котором сообщалось, что они получили грант на образование от Python программный фундамент. Думаю, это того стоит, особенно если вам нравится питон как язык
maroof shittu
1
В любом случае BeeWare, похоже, не поддерживает Android (Java) на данном этапе.
Марк Андерсон
15

Вы можете попробовать BeeWare - как описано на их веб-сайте:

Пишите свои приложения на Python и выпускайте их на iOS, Android, Windows, MacOS, Linux, Web и tvOS, используя богатый собственный пользовательский интерфейс. Одна кодовая база. Несколько приложений.

Дает вам желание писать Android-приложения на Python прямо сейчас, а также дает то преимущество, что вам не нужно будет изучать еще один фреймворк в будущем, если вы в конечном итоге захотите что-то сделать на одной из других перечисленных платформ.

Вот Учебник для приложений Android .

Эммагордон
источник
5
Вы сами создали приложение с помощью BeeWare?
Берри Цакала
12

Есть два основных претендента на приложения Python на Android

Chaquopy

https://chaquo.com/chaquopy/

Он интегрируется с системой сборки Android и предоставляет Python API для всех функций Android. Процитируем сайт: «Полный набор инструментов Android API и пользовательского интерфейса прямо в вашем распоряжении».

Beeware (набор инструментов для виджетов Toga)

https://pybee.org/

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

Который из?

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

Будьте осторожны, Toga, как и все библиотеки виджетов, хорош для распространения основ на нескольких платформах. Если у вас есть базовый дизайн и вы хотите перейти на другие платформы, это должно сработать для вас.

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

Харви
источник
10

Android, Python!

Когда я увидел эти два ключевых слова вместе в вашем вопросе, Киви - это первое, что пришло мне в голову.

Логотип Kivy

Прежде чем приступить к собственной разработке Android на Java с помощью Android Studio, я пробовал Kivy . Это просто потрясающе. Вот несколько преимуществ, которые я смог выяснить.


Простой в использовании

С основами Python вам не составит труда изучить его.


Хорошее сообщество

Он хорошо задокументирован и имеет отличное активное сообщество.


Кросс-платформа.

Вы можете разработать что-то для Android, iOS, Windows, Linux и даже Raspberry Pi с помощью этой единой платформы. Открытый источник.


Это бесплатное программное обеспечение

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


Поддержка ускоренной графики

Графический движок Kivy, созданный поверх OpenGL ES 2, делает его подходящим для программного обеспечения, которое требует быстрой визуализации графики, такого как игры.



Теперь, переходя к следующей части вопроса, вы не можете использовать Android Studio IDE для Kivy. Вот подробное руководство по настройке среды разработки.

Бертрам Гилфойл
источник
5
Поддержка Windows сильно отстает от производственных стандартов (или даже от стандартов любителей). К тому же половина мира не может его использовать из-за отсутствия поддержки RTL.
Берри Цакала
Почему вы оставили Kivy и перешли на нативные инструменты разработки? Вы предполагаете, что у него есть недостатки.
igoemon