Главная/ Блог/ Мобильный бекенд на Python

Cоздание приложения для Android на Python

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

May 2024

Бум рынка мобильных устройств закономерно привел к взрывному развитию мобильной разработки. По данным исследования data.ai, в 2023 году мобильные приложения загрузили на устройства 257 миллиардов раз, а пользователи в среднем тратят на мобильные приложения пять часов в день. 

Экономика мобильных приложений тоже растет, рынок уже оценили в 533 миллиарда долларов, а ежедневные расходы на магазины приложений и рекламу составили 1,5 миллиарда долларов. Поэтому больше проектов хотят выйти на рынок мобильной разработки. 

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

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

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

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

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

  • Простой синтаксис. Код на Python легко писать и читать. Благодаря этому у языка низкий порог вхождения, что отчасти объясняет его популярность. Плюс, код пишется быстро, и его легко обслуживать в будущем.
  • Встраиваемость. Это высокоуровневый язык, поэтому он легко совместим с разными типами устройств и операционных систем. Python легко интегрируется в приложения и может «склеивать» части проектов, написанные на разных языках.
  • Быстрая разработка. По сравнению с Java, написание кода на Python занимает в 3-5 раз меньше времени. 
  • Развитое сообщество. Для Python написано очень много полезных инструментов и библиотек, есть разные варианты фреймворков. 

Основные инструменты для мобильной разработки под Android на Python

За последние годы появилось несколько фреймворков, которые делают возможным создание приложений на Андроид с помощью Питона. 

  • Kivy. Кросс-платформенный фреймворк для создания графических пользовательских интерфейсов. Поддерживает создание приложений на Android и iOS на Python. Содержит большой набор UI-элементов.
  • BeeWare. Набор инструментов и библиотек для мобильной разработки на Python. Позволяет создавать единую кодовую базу для приложений под iOS и Android, при этом предлагает набор нативных виджетов для каждой операционной системы.
  • Chaquopy. Плагин для Android Studio, который позволяет использовать Python и Java в одном проекте, что дает доступ к Android API и библиотекам.
  • PyQT. Набор расширений для языка Python, который позволяет создавать приложения с графическим интерфейсом за счет функций графического фреймворка Qt.

Первые два фреймворка сегодня являются самыми популярными для разработки приложений на Андроид на Питоне. Остановимся на них подробнее. 

Kivy —  фреймворк для разработки приложений под Android и iOS на Python. Он вышел в 2011 году и стал первым инструментом, который позволил использовать код Python для мобильных проектов. Kivy использует OpenGL ES 2 для графики, и обладает набором настраиваемых виджетов. Однако, графические элементы унифицированы и одинаковы для всех мобильных платформ, поэтому с точки зрения пользовательского опыта это не лучший выбор. Особенностью Kivy является специальный язык разметки Kv. За счет него можно создавать гибкие и сложные интерфейсы и изолировать их от бизнес-логики приложений. 

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

BeeWare моложе и пока не так популярен. Однако, у него есть одна важная особенность, которая позволяет ему в перспективе конкурировать с Kivy. Это нативные элементы интерфейса для iOS и Android. То есть, с его помощью можно создавать мобильные приложения, которые будут выглядеть как «родные» для каждой ОС. Благодаря этому пользовательский опыт будет значительно приятнее. 

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

Недостатки Python для мобильной разработки для Android

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

  • Производительность. Android не может использовать чистый код Python, поэтому чтобы  запустить его на устройстве, придется провести немало манипуляций. Плюс, эти слои влияют на общую производительность, и по сравнению с приложениями на Java и Kotlin, приложения на Питоне на Андроиде всегда будут работать медленнее. 
  • Низкая скорость. Python интерпретируемый скриптовый язык, сам по себе достаточно медленный. Поэтому он проигрывает скомпилированным C/С++ и Java в скорости. В сочетании с описанными выше особенностями производительности это становится серьезной проблемой.
  • Сложность. Все, сказанное выше можно обобщить одной фразой: делать приложения Андроид на Python сложно. Нужны специальные инструменты, набор которых пока  ограничен. Плюс, потрудиться придется на любом этапе от запуска на Андроиде до доступа к аппаратным функциям через Android API. Получить удовольствие от этого могут лишь истинные энтузиасты. Обычные разработчики обратятся к более приспособленным для мобильной разработки технологиям. 
  • Нерентабельность. Бизнес не рассматривает Python как полноценную технологию мобильной разработки. Это сложно, долго, дорого, да и немногие программисты умеют это делать. Знаменитые примеры типа Google и Facebook, которые якобы используют Python в приложениях, не упоминают, что это касается только бэкенда. Но это традиционный способ применения, где в полной мере используют возможности языка. 

Традиционные технологии для разработки на Android

У Python серьезная конкуренция на рынке разработки приложений для Android. В первую очередь, это официальные для платформы языки Java и Kotlin. Оба входят в Android SDK (на Java и написаны большинство его инструментов) и совместимы с 

Android Studio — основной интегрированной средой разработки (IDE) Android, и другими популярными IDE. 

Kotlin неразрывно связан с Java, он сделан на его основе и язык трудно освоить с нуля без знания Java. Kotlin лаконичный и типобезопасный язык. Его особенность — корутины, за счет которых пишут асинхронные программы. При этом, он полностью совместим с Java, и может использоваться для расширения функционала и обновления приложений, изначально написанных на Java. В 2017 году было Kotlin стал официальным языком Android-разработки, а в 2019 — приоритетным. Кстати, язык назван в честь острова Котлин, на котором расположен Кронштадт.

Преимуществом использования этих языков в мобильной разработке для Android является большое сообщество и множество инструментов, в том числе для рутинных операций или, наоборот, для создания нетипичных проектов. Все, что придется делать руками для Андроид-приложения на Питоне, в Java и Kotlin давно автоматизировано. 

Другой альтернативой будет Flutter. Это популярный кросс-платформенный фреймворк Google для приложений с единой кодовой базой для iOS и Android-устройств. Однако, на Flutter можно создавать также десктопные и веб-приложения, правда, для этих целей его используют реже. Flutter использует язык программирования Dart, который Google позиционирует как замену JavaScript. Особенность Flutter — высокая графическая производительность, и нативные интерфейсы для  платформ за счет двух наборов виджетов для Android и iOS. Приложения на Flutter используют один код для основных мобильных платформ, но выглядят как нативные. Flutter часто выбирают для мобильных приложений, когда нужно запуститься в короткие сроки. 

Заключение

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

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

Если вы ищете команду, которая бы создала проект на Python с нуля, или усилила бы вашу команду экспертизой, напишите Evrone. У нас большая и опытная команда Python-разработчиков, и опыт сотрудничества с крупнейшими tech-проектами в России. Посмотреть наше портфолио можно здесь. Чтобы связаться с нами, заполните форму внизу, и мы сразу перезвоним или напишем.

Будем на связи
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.