Как создать приложение для android на python
Перейти к содержимому

Как создать приложение для android на python

  • автор:

Как разрабатывать на Python под Android

Обложка поста Как разрабатывать на Python под Android

На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

В последнее время появляется большое количество ресурсов по разработке на Python под Android. Все чаще упоминается предназначенный для этой задачи фреймворк Kivy (и его ответвления), ведь он является одним из самых проверенных временем и надежных проектов в этой области. Тем не менее, одну важную деталь незаслуженно обделяют вниманием — что вообще мы сможем делать после того, как Python станет запускаться на устройстве? Есть ли какие-то ограничения? Все ли библиотеки можно подключать? Возможно ли делать все то же, что и при написании приложения на Java? Данные вопросы волнуют многих, и они рассматриваются и решаются в рамках проекта Kivy. В этой статье я постараюсь рассмотреть наиболее интересные и важные детали.

Python-for-android

Прежде всего давайте посмотрим на то, с помощью чего Python получает возможность работать под Android — инструмент, названный, как ни странно, python-for-android. Его основная функция состоит в том, чтобы создать дистрибутив — папку проекта, содержащую все необходимое для запуска вашего приложения. А точнее, сам интерпретатор, Kivy и библиотеки, от которых он зависит: Pygame, SDL и несколько других. Также дистрибутив включает в себя загрузчик Java, отображающий OpenGL и выступающий в качестве посредника между Kivy и операционной системой. Затем вы добавляете ко всему этому свои скрипты, настройки вроде иконки и имени, компилируете с помощью Android NDK и вуаля — APK с вашим приложением готов!

И это всего лишь базовая процедура, на самом деле сгенерированный пакетный файл может включать (и включает) в себя гораздо больше. Вместе со всем прочим в APK вшивается большая часть стандартной библиотеки, а любой сторонний модуль, написанный на Python, может быть легко добавлен — все так же, как и при разработке десктоп-приложений. Добавка модулей с компилируемыми компонентами тоже не вызывает трудностей, необходимо лишь указать, как их нужно собирать. Как правило, это не представляет собой ничего сложного, достаточно лишь поставить пару галочек перед запуском процедуры сборки, хотя в редких отдельных случаях могут понадобиться дополнительные действия. Python-for-android уже включает в себя указания для компиляции таких популярных модулей, как: numpy, sqlite3, twisted и даже django!

Вышеописанные принципы лишь в общих словах объясняют, как работает python-for-android. В любой момент вы можете получить больше информации на данную тему, заглянув в документацию Kivy. Я рекомендую вам Buildozer — надстройку для python-for-android, предоставляющую собой удобный интерфейс и автоматическое разрешение некоторых зависимостей. Мы стараемся сделать так, чтобы написанная выше цепочка действий использовалась не только в Kivy, но и в других проектах. Основной процесс сборки останется таким же, но нужда в загрузчике Java отпадет, так как он необходим только для поддержки некоторых специфичных нужд фреймворка.

Обращение к Android API с помощью PyJNIus

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

В качестве простого примера приведем программу, которая заставит телефон вибрировать на протяжении 10 секунд:

from jnius import autoclass # Для начала нам нужна ссылка на Java Activity, в которой # запущено приложение, она хранится в загрузчике Kivy PythonActivity PythonActivity = autoclass('org.renpy.android.PythonActivity') activity = PythonActivity.mActivity Context = autoclass('android.content.Context') vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE) vibrator.vibrate(10000) # аргумент указывается в миллисекундах 

Если вы знакомы с Android API, то без труда заметите, что код выше очень похож на аналогичный на Java — PyJNIus просто позволяет нам обращаться к тому же API, но прямо из Python. Большая часть Android API может быть вызвана подобным образом, что позволяет достичь того же функционала, что и при разработке на Java.

Главный минус PyJNIus в том, что он требует неплохого понимания структуры Android API, а код выходит громоздким, хотя его эквивалент на Java выглядит точно так же. Для решения этой проблемы Kivy включает в себя Plyer.

Plyer: кроссплатформенное API для платформоспецифичных задач

Проект Plyer ставит себе цель создать простой «питоничный» интерфейс для функций, которые присутствуют на большинстве платформ. Например, код выше легким движением руки превращается в…

from plyer.vibrator import vibrate vibrate(10) # В Plyer аргументы указываются в секундах 

Более того, написанный код попытается выполнить свою задачу на всех поддерживаемых Plyer платформах — на данный момент это: Android, iOS, Linux, Windows и OS X (для iOS также существует аналог PyJNIus, называемая PyOBJus). На самом деле, вибрация — не самый лучший пример, потому что сейчас она реализована только для Android, но такие функции как проверка уровня заряда батареи:

from plyer import battery; print(battery.status) 
from plyer import tts; tts.speak('hello world') 

— работают как в десктопных, так и в мобильных приложениях, а получение данных с компаса/гироскопа и отправка SMS без проблем реализуются на Android и iOS.

Plyer находится на начальной стадии развития, так что любая помощь в разработке приветствуется. Также, мы участвуем с ним в Google Summer of Code в этом году.

Не только ради Kivy

Все вышеперечисленные инструменты были разработаны для нашего фреймворка, но на самом деле они больше предназначены для разработки под Python в целом. В Plyer мы специально избегаем какой-либо зависимости от Kivy, а PyJNIus нужен лишь для доступа к Android JNI. Искренне надеемся, что эти инструменты станут полезны для любого, кто пишет на Python под Android. Вы уже можете попробовать PyJNIus, используя QPython. Python-for-android больше завязан на взаимодействии с Kivy, но мы будем рады обсудить этот вопрос.

Многое можно реализовать при разработке на Android с помощью Python, несмотря на все различия с Java, которая предназначена для этого, но эти возможности могут быть расширены еще больше в ближайшем будущем. И если вы заинтересовались описанными выше проектами, то самое время присоединиться к нашей команде!

Перевод статьи «Python on Android»

Мобильные приложения на Python: действительно ли Python всё ещё хороший выбор для разработки мобильных приложений?

Многие мобильные приложения создаются на Python, но является ли это действительно лучшим вариантом для разработки мобильных приложений в 2023 году? Сегодня мы рассмотрим, какие типы приложений можно создавать на Python, преимущества и недостатки использования Python, а также то, на что стоит обратить внимание при создании мобильных приложений на Python.

4.2K открытий
Действительно ли Python всё ещё хороший выбор для разработки мобильных приложений?
Краткий обзор Python

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

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

Преимущества Python для разработки мобильных приложений

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

Разработка приложений с использованием Python предлагает следующие преимущества:

  • Совместимость с большинством систем и платформ, так что мобильное приложение легко интегрируется с инструментами сторонних разработчиков.
  • Поддержка нескольких программных парадигм (процедурное, объектно-ориентированное и функциональное программирование).
  • Обширная стандартная библиотека Python, которая убирает необходимость кодирования для многих функций, позволяя разработчикам копировать и вставлять части кода, экономя время и снижая затраты на разработку.
  • Поддержка асинхронного кода.
  • Высокий уровень безопасности. Мобильные приложения, разработанные на Python, менее подвержены кибератакам и обычно лучше справляются с ними, чем приложения, созданные на альтернативных языках программирования.

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

Примеры мобильных приложений, созданных на Python

Python — универсальный язык программирования, и с его помощью можно создавать множество типов мобильных приложений:

  • Приложения машинного обучения
  • Приложения блокчейна
  • Бизнес-приложения
  • Приложения для социальных сетей
  • Игровые приложения
  • Приложения для управления системами

Многие крупные предприятия доверяют Python для разработки мобильных приложений.

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

Многие игровые приложения создаются с помощью Python, потому что он имеет много функциональных возможностей и дополнений, которые могут быть использованы для создания разнообразных и увлекательных игр. Среди лидеров игрового рынка, построенных на Python, Battlefield 2, Pirates of the Caribbean и World of Tanks. Некоторые из любимых функций Python, используемых в играх, — это инструменты для создания деревьев диалогов и систем уровней.

Еще один пример популярного мобильного приложения на Python — Dropbox. Каждый знает и любит эту службу хранения файлов, которая быстрая, надежная и мощная — все благодаря Python.

Среди других мобильных приложений Python вы найдете Netflix, блокчейн-приложение BurstIQ, Pinterest, Uber и Reddit.

Инструменты для разработки приложений на Python

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

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

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

В отличие от Kivy, BeeWare предлагает нативные интерфейсы для Android и iOS. Поскольку BeeWare поставляется с единой кодовой базой для нескольких платформ, вы можете написать код один раз и развернуть его на всех платформах, экономя время и стоимость проекта.

Python в тестировании мобильных приложений

Популярным примером использования Python является тестирование мобильных приложений. Поскольку кривая обучения на Python довольно простая, и сообщество активно, это популярный выбор для многих специалистов по QA с ограниченными техническими навыками. Тестирование с помощью Python позволяет нацелиться на конкретные ошибки и сбои или просмотреть весь код, что делает его гибким и позволяет запускать тесты быстрее. Он также поддерживает различные типы тестов, так что мобильные приложения работают исправно и без особых проблем.

Python в прототипировании

Python широко используется в прототипировании, потому что с этим языком программирования создание прототипа занимает гораздо меньше времени. Более быстрое создание означает более быстрый запуск и передачу его пользователям для тестирования. В результате процессы итерации и инновации становятся более плавными, помогая компании превзойти конкурентов и поразить своих клиентов.

Подходит ли Python для разработки мобильных приложений?

Ранее Python иногда критиковали за то, что это не самый оптимизированный язык программирования для создания мобильных приложений. Однако со временем технологии продвинулись, что сделало процесс разработки мобильных приложений на Python более приятным.

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

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

В целом, Python — отличный выбор, если:

  • Вам нужно быстро и с ограниченным бюджетом создать безопасное мобильное приложение.
  • Вы работаете с многими стажерами и новичками.
  • Мобильное приложение с анализом данных, обработкой изображений или распознаванием голоса и лиц.
  • Вам важна интеграция с другими языками, такими как PHP или Java.

Заключение

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

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

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

Разработка мобильных приложений на Python. Создание анимаций в Kivy. Part 2

Приветствую всех любителей и знатоков языка программирования Python!

Сегодня продолжим разбираться с темой анимаций в кроссплатформенном фреймворке для с поддержкой мультитач — Kivy в связке с библиотекой компонентов Google Material Design — KivyMD. В прошлой статье мы уже разбирали пример тестового приложения на Python/Kivy/KivyMD, в этой — пройдемся по теме анимаций более подробно. В конце статьи я приведу ссылку на репозиторий проекта, в котором вы сможете скачать и сами пощупать, демонстрационное Kivy/KivyMD приложение. Как и предыдущая, эта статья будет содержать не маленькое количество GIF анимаций и видео, а поэтому наливайте кофе и погнали!

Kivy работает на Linux, Windows, OS X, Android, iOS и Raspberry Pi. Вы можете запустить один и тот же код на всех поддерживаемых платформах без внесения дополнительных изменений в кодовую базу. Kivy поддерживает большое количество устройств ввода, включая WM_Touch, WM_Pen, Mac OS X Trackpad и Magic Mouse, Mtdev, Linux Kernel HID, TUIO и так же как и Flutter, не задействует нативные элементы управления. Все его виджеты настраиваются. Это значит, что приложения Kivy будут выглядеть одинаково на всех платформах. Но благодаря тому, что виджеты Kivy могут быть кастомизированы как угодно, вы можете создавать свои собственные виджеты. Например, так появилась библиотека KivyMD. Прежде чем продолжить, давайте посмотрим небольшой обзор возможностей Kivy:

Демонстрационные ролики Kivy приложений

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

from kivy.animation import Animation from kivy.lang import Builder from kivymd.app import MDApp KV = """ opacity: 0 adaptive_height: True halign: "center" y: -self.height MDScreen: on_touch_down: app.start_animation() CommonLabel: id: lbl_1 font_size: "32sp" text: "M A R S" CommonLabel: id: lbl_2 font_size: "12sp" text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" """ class TestAnimation(MDApp): def build(self): return Builder.load_string(KV) def start_animation(self): lbl_1 = self.root.ids.lbl_1 lbl_2 = self.root.ids.lbl_2 Animation( opacity=1, y=lbl_1.height * 2, d=0.9, t="in_out_back" ).start(lbl_1) Animation( opacity=1, y=lbl_2.height + ids.lbl_1.height, d=1, t="in_out_back" ).start(lbl_2) TestAnimation().run() 

Это уже готовое приложение. Мы будем его лишь слегка редактировать. Правило CommonLabel в KV строке аналогично созданию класса в Python коде. Сравните:

Код в Kivy Language всегда короче и читабельнее. Поэтому в Python коде у нас будет только логика. Мы создали две метки с общими свойствами, описанными в правиле CommonLabel: прозрачность (opacity), размер текстуры метки (adaptive_height), горизонтальное выравнивание (halign), положение по оси Y (y ) и дали этим меткам id-шники (lbl_1, lbl_2), чтобы иметь возможность обращаться к свойствам объектов меток и манипулировать ими из Python кода. Далее мы привязали к событию on_touch_down (сработает при прикосновении к экрану в любом месте) вызов метода start_animation, в котором будем анимировать наши две метки.

Animation

Для анимарования объектов в Kivy используется класс Animation. Использовать его очень просто: при инициализации класса Animation вы должны передать в качестве аргументов имена свойств с целевыми значениями, которые будут достигнуты в конце анимации. Например:

 def start_animation(self): # Получаем объекты меток из KV разметки lbl_1 = self.root.ids.lbl_1 lbl_2 = self.root.ids.lbl_2 # Анимация первой метки Animation( opacity=1, # анимация прозрачности до значения 1 y=lbl_1.height * 2, # анимация положения виджета по оси Y d=0.9, # время выполнения анимация t="in_out_back" # тип анимации ).start(lbl_1) # в метод start передаем объект, который нужно анимаровать # Анимация второй метки Animation( opacity=1, y=lbl_2.height + lbl_1.height, d=1, t="in_out_back" ).start(lbl_2) 

На нижеследующей анимации я продемонстрировал результат простейшей анимации, которую мы создали, с разными типами анимирования:

Давайте немного усложним задачу и попробуем анимировать вращение меток на плоскости. Для этого будем использовать матричные манипуляции (PushMatrix, PopMatrix, Rotate, Translate, Scale). Добавим к общей метке инструкции canvas:

 angle: 180 # значение вращения [. ] canvas.before: PushMatrix Rotate: angle: self.angle origin: self.center canvas.after: PopMatrix 

А в Python коде в класс Animation передадим новое свойство angle для анимации:

 def start_animation(self): lbl_1 = self.root.ids.lbl_1 lbl_2 = self.root.ids.lbl_2 Animation(angle=0, [. ]).start(lbl_1) Animation(angle=0, [. ]).start(lbl_2) 

Добавим анимирование масштаба меток:

 scale: 5 # значение масшбирования [. ] canvas.before: PushMatrix [. ] Scale: # масштабирование по трем осям x: self.scale y: self.scale z: self.scale origin: self.center canvas.after: PopMatrix 

В Python коде в класс Animation передадим новое свойство scale для анимации:

 def start_animation(self): lbl_1 = self.root.ids.lbl_1 lbl_2 = self.root.ids.lbl_2 Animation(scale=1, [. ]).start(lbl_1) Animation(scale=1, [. ]).start(lbl_2) 

Класс Animation имеет ряд событий для отслеживания процесса анимации: on_start, on_progress, on_complete. Рассмотрим последний. on_complete вызывается в момент завершения процесса анимации. Привяжем это событие к методу complete_animation, который мы сейчас создадим:

[. ] class TestAnimation(MDApp): [. ] def complete_animation(self, animation, animated_instance): """ :type animation: :type animated_instance: > """ # Анимируем масштаб и цвет первой метки. Animation(scale=1.4, d=1, t="in_out_back").start(animated_instance) Animation(color=(1, 0, 1, 1), d=1).start(animated_instance) 
 def start_animation(self): [. ] animation = Animation( angle=0, scale=1, opacity=1, y=lbl_1.height * 2, d=0.9, t="in_out_back" ) animation.bind(on_complete=self.complete_animation) animation.start(lbl_1) [. ] 

На этом пока все. Просили:

Ниже прикрепляю превью Kivy/KivyMD проекта и ссылку на репозиторий, где можно скачать APK и пощупать:

APK можно найти в директории репозитория — StarTest/bin

Kivy — Создание мобильных приложений на Python

Создание приложений на Android, iOS

В наши дни каждый разработчик может столкнуться с необходимостью работы над мобильным или веб-приложением на Python. В Python нет встроенных инструментов для мобильных устройств, тем не менее существуют пакеты, которые можно использовать для создания мобильных приложений. Это Kivy, PyQt и даже библиотека Toga от Beeware.

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

В руководстве будут разобраны следующие темы:

  • Работа с виджетами Kivy;
  • Планировка UI и лейауты;
  • Добавление событий;
  • Использование языка KV;
  • Создание приложения-калькулятора;
  • Упаковка приложения для iOS, Android, Windows и macOS.

Разбор данного руководства предполагает, что читатель знаком с объектно-ориентированным программированием. Для введения в курс дела можете просмотреть статью об Объектно-ориентированном программировании (ООП) в Python 3.

Принципы работы фреймворка Kivy Python

Kivy был создан в 2011 году. Данный кросс-платформенный фреймворк Python работает на Windows, Mac, Linux и Raspberry Pi. В дополнение к стандартному вводу через клавиатуру и мышь он поддерживает мультитач. Kivy даже поддерживает ускорение GPU своей графики, что во многом является следствием использования OpenGL ES2. У проекта есть лицензия MIT, поэтому библиотеку можно использовать бесплатно и вкупе с коммерческим программным обеспечением.

Во время разработки приложения через Kivy создается интуитивно понятный интерфейс (Natural user Interface), или NUI. Его главная идея в том, чтобы пользователь мог легко и быстро приспособиться к программному обеспечению без чтения инструкций.

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

Установка Kivy

У Kivy есть множество зависимостей, поэтому лучше устанавливать его в виртуальную среду Python. Можно использовать встроенную библиотеку Python venv или же пакет virtualenv.

Виртуальная среда Python создается следующим образом:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *