Полноценное Python приложение на Android
В этой статье я хотел бы рассказать о том, как создать полноценное приложение на Python для Android. Нет, это не очередной мануал для создания скрипта для sl4a, это мануал по созданию полноценного приложения с UI, возможностью собрать apk и выложить на Android Market. Заодно я хотел бы похвалиться своим первым приложением на google.play, это не hello world, а полезное приложение для фотографов, хотя и узко специализированное.
Начну рассказ пожалуй с самого приложения и завершу рассказам о том как оно делалось.
isortViewer
Мне как фотографу приходится тратить много времени на сортировку и отбор фотографий. Не всегда хочется сидеть за рабочим компьютером, когда под рукой есть ноутбук, смартфон или планшет, но копировать туда десятки гигабайт raw или jpeg файлов, а потом синхронизировать с рабочим компьютером — сомнительное удовольствие. Именно поэтому я создал программы isortManager и isortViewer, которые значительно облегчили мне работу по сортировке и отбору фотографий. Теперь заниматься отбором и сортировкой фотографий я могу лежа на пляже диване или скучая в пробке 🙂
Копипаст описания и пара скриншотов:
isortViewer — программа для фотографов, которая позволяет легко и быстрой отбирать и сортировать тысячи фотографий (raw или jpg) с фотосессий на ваших android смартфонах и планшетах. При этом, нет необходимости копировать десятки гигабайт jpg или raw файлов на устройство. Просто воспользуйтесь бесплатной программой isortManager для компьютера, которая сохранит все в один небольшой файл проекта:
1. Скачайте и запустите isortManager с официального сайта;
2. Создайте проект и добавьте папки с фотографиями. Поддерживаются форматы: jpg и raw (cr2, nef, orf и т.д.). В итоге у вас получится небольшой файл проекта (примерно 150 мб на несколько тысяч фотографий, будь то jpg или raw формат);
3. Скопируйте на ваше android устройство файл проекта, откройте в isortViewer. Вы можете помечать фотографии «на удаление», а так же, ставить рейтинги от 1 до 5 звезд;
4. После этого, скопируйте файл проекта обратно и примените изменения в isortManager. Кроме удаления выбранных фотографий, вы можете копировать или перемещать отмеченные фотографии. Например, фотографии с «5 звезд» можно скопировать в папку «шедевры», а «1 звезда» переместить в папку «хлам».
Приложение абсолютно бесплатно и доступно на google.play, однако донейты приветствуются.
Исходники доступны на официальном сайте!
Как это делалось
Так как python лучший язык программирования в мире кроме python я ничего не знаю, решено было написать приложение на python.
isortManager
С isortManager для PC проблем не возникло, создание GUI сборки под windows уже давно обкатано и работает он очень просто: с помощью dcraw выдирает jpg превьюшки из raw файлов, ресайзит из с помощью PIL и складывает в один файл с достаточно простой структурой. Был изобретен свой весолипед с контейнером для хранения фотографий и метаданных (полный путь к фотографии, отметка «на удаление» и отметка рейтинга), так как, например, zip или tar формат, не могут изменять один файл в архиве (метаданные), требую перепаковки всех файлов. Файлы просто пишутся один за другим подряд и в блоке метаданных (обычный repr питоновского словаря) в конце сохраняется смещения начала файлов, плюс в конце файла пишется размер блока метаданных. GUI написано на Tkinter (люблю я его за быстроту написания и за малый размер итоговой сборки), вот собственно скриншот:
И да, все это работает и на linux, и даже быстрее чем на windows )
isortViewer для android
Всего я нашел два способа заставить python приложение работать как полноценное приложение на android, это pygame for android и проект kivy.
Pygame — более низкоуровневый, все UI пришлось бы рисовать вручную, что отняло бы много времени, поэтому был выбран фреймворк kivy. Итак:
Это замечательный фрейморк для написания приложение для windows, linux, MacOS, android и iOS. Поддерживается мультитач, UI рисутется через OpenGL, значит должно работать аппаратное ускорение. Увидеть работу виджетов можно установив демонстрационное приложение Kivy Showcase. Есть возможность использования некоторых платформо специфичных функций, например, вибро или акселерометр, с помощью модуля android.
Для разработки я бы рекомендовал использовать linux, тем более, apk собираются именно в этой OS.
Hello World выглядит так:
Причем этот код будет работать на всех заявленных платформах. Пропадает необходимость в тестировании приложения в эмуляторе. Достаточно запустить скрипт на исполнение в своей любимой IDE и увидеть результат на экране компьютера, без задержек на компиляцию, запуск эмулятора и пр. Если вы все же хотите увидеть как это будет выглядеть непосредственно на устройстве, просто установите Kivy Launcher, скопируйте файлы проекта на карту памяти и запустите. Дебажить при этом можно при помощи adb logcat.
Если вы используете библиотеку android, которой нет на PC, но хочется запускать приложение не только на android, воспользуйте такой конструкцией:
Сборка apk достаточно проста и описана на этой странице. После сборки релиза, достаточно подписать свое приложение (я использовал этот мануал) и выложить в google play.
Плюсы kivy:
- Быстрая разработка под различные платформы, практически без доработки кода.
- Доступен широкий выбор виджетов
- Высокая скорость работы. Весь ресурсоемкий вынесен в С модули. Сам интерпретатор python на android работает нативно.
- Фремворк включает в себя множество инструментов, например анимация, кеширование и пр.
- upd: Доступ к камере, буферу обмена, микрофону. Написать свой видеоплеер можно буквально за 20 строк.
Минусы kivy:
- Большой размер apk файла. Проект с 300 кб ресурсов (скрипты, графика) собирается в 7 мб apk. Хотя, думаю, есть возможность это как то оптимизировать.
- Невозможность (пока), восстанавливать работу после сворачивания — приложение закрывается
В следующей своей статье, я расскажу более подробно о процессе написания приложения «с нуля», расжевывая каждую строчку кода.
Хотелось бы сразу пресечь холивары на тему «для android только java, python не нужен». Я считаю, не важно, какие технологии «под капотом», главное чтоб приложение было качественным.
Сфера применения kivy может быть огромной. Сейчас на моем счету несколько приложений, написанных под заказ, где python с фремворком kivy показал себя с хорошей стороны. Например, ровно за один час, было написано приложение, для сети сервисных центров. Приложение работает в режиме киоска и установлено на дешевые китайские планшеты, которые висят в холле. Клиент набирает номер заказа, далее по WiFi планшет соединяется с сервером и сообщает статус заказа.
Источник
Kivy — Создание мобильных приложений на Python
В наши дни каждый разработчик может столкнуться с необходимостью работы над мобильным или веб-приложением на 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 создается следующим образом:
Источник
Инструменты для запуска Python на Android
Дата публикации Jun 14, 2018
Python зарекомендовал себя как очень способный язык — доступный для новичков, но мощный в руках экспертов. Почему ты не можешьвезде используйте Pythonчто нужно сказать компьютеру что-то сделать? И не должны ваши инструментыиспользовать все возможности Pythonкак язык, а не только биты, которые красиво отображаются на привязку C?
Современные вычисления не происходят в окне консоли 80×25. Это происходит нателефоны, планшеты и настольные компьютерыс богатыми пользовательскими интерфейсами. Разве вы не сможете использовать Python во всех этих местах, ииспользовать уникальные возможности этих платформ?
Конечным пользователям не нужно заботиться о том, на каком языке написаны их инструменты. И это начинается с того, как они выглядят и ведут себя.как полностью родные инструменты, Родной внешний вид, собственное поведение, доставленное способом, которым доставлено нативное приложение. Почему ваши инструменты Python не должны подходить так же хорошо, как нативный инструмент?
Есть несколько способов использовать Python на Android.
1. Пчеловодство
BeeWareпредставляет собой набор инструментов для создания собственных пользовательских интерфейсов
Это то, что предлагает BeeWare. Инструменты, которые помогут вам написать код Python с богатым,родной пользовательский интерфейс; и библиотеки и код поддержки, необходимые для запуска этого кодаiOS, Android, macOS, Linux, Windows, TVOS и многое другое,
Открытый источник
Процесс разработки Open Source зарекомендовал себя как самый надежный способ разработки надежного и надежного программного обеспечения. Вот почему весь набор инструментов BeeWare лицензирован BSD, идоступно всем для использования и изменения,
2. Chaquopy
Chaquopyэто плагин для системы сборки Android на базе Gradle.
Chaquopy позволяет свободно смешивать Java и Python в вашем приложении, используя любой язык, который лучше всего соответствует вашим потребностям:
- СPython APIВы можете написать приложение частично или полностью на Python. Полный Android API и инструментарий пользовательского интерфейса находятся в вашем распоряжении.
Chaquopy работает в стандартной системе сборки Android:
- Если вы используете Android Studio, вы можете начать использовать Chaquopy за 5 минут без изменений в существующем процессе разработки.
- Загрузка и установкаавтоматизированы с помощью Gradle.
- Попробуйте демо-приложение дляPython 2илиPython 3,
- Просмотрите пример исходного кода наGitHub,
- Или просмотритедокументация,
3. Киви
Kivyпредставляет собой кроссплатформенный набор инструментов пользовательского интерфейса на основе OpenGL.
Вы можете запускать приложения Kivy на Android, на (более или менее) любом устройстве с OpenGL ES 2.0 (минимум Android 2.2). Это стандартно для современных устройств; Google сообщает, что требование выполнено99,9% устройств,
Kivy APK — это обычные приложения для Android, которые вы можете распространять, как и любые другие, в том числе в таких магазинах, как магазин Play. Они ведут себя должным образом при приостановке или перезапуске, могут использовать службы Android и иметь доступ к большей части обычного API Java, как описано ниже.
Следуйте инструкциям ниже, чтобы узнать, какупаковать свое приложение для Android,отладить ваш код на устройстве, а такжеиспользовать API для Androidнапример, для датчиков вибрации и считывания.
Проект Kivy предоставляет все необходимые инструменты для упаковки вашего приложения на Android, включая создание собственного автономного APK, который может распространяться на рынке, таком как магазин Play. Это покрыто полностью вСоздать пакет для Androidдокументация.
Использование Android API
Хотя Kivy является платформой Python, проект Kivy поддерживает инструменты, позволяющие легко использовать обычные API-интерфейсы Java — от вибрации до датчиков и отправки сообщений через SMS или электронную почту.
Для новых пользователей мы рекомендуем использоватьPlyer, Для более расширенного доступа или для API, которые в настоящее время не упакованы, вы можете использоватьPyjniusнепосредственно. Киви также поставляетмодуль Androidдля базовой функциональности Android.
Пользователь добавил код Android и примеры доступны наKivy Wiki,
4. Pyqtdeploy
пyqtdeployинструмент для развертывания приложений PyQt Он поддерживает развертывание на настольные платформы (Linux, Windows и OS X) и на мобильные платформы (iOS и Android).
pyqtdeploy работает, беря отдельные модули приложения PyQt, замораживая их, а затем помещая их в файл ресурсов Qt, который конвертируется в код C ++ с помощью инструмента Qt rcc. Стандартная библиотека Python обрабатывается таким же образом.
pyqtdeploy также генерирует файл Qt .pro, который описывает весь сгенерированный код C ++. Из этого инструмента Qmake Qt используется для генерации специфичного для платформы Makefile, который затем генерирует один исполняемый файл. Затем можно использовать дополнительные инструменты Qt и / или платформы для преобразования исполняемого файла в развертываемый пакет для конкретной платформы.
Для установки pyqtdeploy требуются PyQt5 и Python v3.2 или новее.
Поддерживаются приложения PyQt4 и PyQt5, написанные с использованием Python v2.6 и новее и Python v3.3 и новее.
pyqtdeploy выпускается под лицензией BSD.
5 QPython
QPythonэто скрипт-движок на устройстве и среда разработки
В большинстве случаев скрипт может выполнять вашу работу так же хорошо, как и собственное приложение. Теперь вы можете сделать это с помощью QPython.
QPython — это скрипт-движок, который запускает программы на Python на устройствах Android. Это также может помочь разработчикам разрабатывать приложения для Android.
QPython включает в себя полный комплект для разработки, который поможет вам разрабатывать программы с помощью мобильных устройств, предоставляет обычную консоль Python
6. SL4A
SL4A(Scripting Layer для Android), первоначально названный ASE (Android Scripting Environment), представляет собой набор «фасадов», которые предоставляют значительно упрощенное подмножество API Android.
SL4A предоставляет языки сценариев для Android, позволяя редактировать и выполнять сценарии и интерактивные переводчики непосредственно на устройстве Android. Эти сценарии имеют доступ ко многим API-интерфейсам, доступным для полноценных приложений Android, но с очень упрощенным интерфейсом, облегчающим выполнение задач.
Скрипты могут быть запущены в интерактивном режиме в терминале и в фоновом режиме. В настоящее время поддерживаются Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl и shell, и мы планируем добавить еще. УвидетьSL4A Video Helpплейлист на YouTube для различных демонстраций функций SL4A.
SL4A предназначен для разработчиков и являетсяальфакачественное программное обеспечение.
7. PySide
PySide(привязка Python для инструментария Qt) имеет некоторую предварительную поддержку Android.
Проект PySide предоставляет привязанные к LGPL привязки Python дляQt 4, Он также включает полный набор инструментов для быстрой генерации привязок для любых иерархий классов C ++ на основе Qt. Привязки PySide Qt позволяют разрабатывать как бесплатное программное обеспечение с открытым исходным кодом, так и проприетарное программное обеспечение, и в конечном итоге направлены на поддержку платформ Qt.
8.Termux
Termuxявляется эмулятором терминала Android и приложением среды Linux, которое работает напрямую без необходимости рутирования или настройки. Минимальная базовая система устанавливается автоматически — дополнительные пакеты доступны через менеджер пакетов APT.
Источник