как запустить python скрипт на андроид
Разработка приложения с использованием Python и OpenCV на Android устройстве
В это статье я хочу показать пример того, как андроид устройство можно использовать для разработки на таких языках программирования как python с библиотекой opencv в среде VSCode (будет использован code-server). В конце статьи приведено небольшое сравнение производительности Termux на моем Android устройстве и Raspberry Pi 3B.
Все действия описанные статье выполнялись на:
Huawei MediaPad M5 10.8
4GB ОЗУ, Hisilicon Kirin 960s, EMUI 9, без root
Для начала понадобится установить Termux (эмулятор терминала, предоставляющий возможности среды Linux), о приложении уже писали на habr.
Далее установим необходимые пакеты, а так же, для более быстрой настройки в дальнейшем, установим ssh сервер:
Теперь можно воспользоваться более удобным для ввода устройством и выполнять действия по ssh. В данной статье будет рассмотрен способ подключения с использованием логина и пароля, для этого необходимо узнать имя текущего пользователя и задать пароль:
По умолчанию openssh прослушивает порт 8022, узнать ip адрес устройства можно с помощью команды ifconfig:
Подключаемся к Termux:
Установить opencv-python в собственном окружении Termux мне не удалось, поэтому воспользуемся трудами Andronix и запустим в Termux Ubuntu 18.04.
В официальном приложением Andronix можно найти команды для установки других дистрибутивов таких как Kali, Manjaro и т.д.
Дополнение 17.11.2020. Если во время установки появляется ошибка proot, читаем комментарий, спасибо @makaedgat.
Если все выполнилось успешно на экране появится
Установим пакеты необходимые для разработки на python3 с использованием opencv:
Установка занимает довольно много времени.
Теперь установим code-server
После установки code-server необходимо отредактировать файл конфигурации
По умолчанию code-server прослушивает адрес 127.0.0.1:8080, для обращения к code-server с других устройств необходимо поменять bind-addr на 0.0.0.0:8080. Присутствует возможность авторизации по паролю. Для задания пароля необходимо изменить значение password. Для отключения авторизации необходимо указать auth: none.
Все действия в статье выполняются в Ubuntu без графического интерфейса в результате чего нет возможности использовать imshow, но есть способ транслировать видео в браузер используя библиотеку flask и специальный MIME тип multipart.
Чтобы не отвлекаться на написание кода, используемого в статье для примера, его можно взять в моем github репозитории.
При первом открытии будет предложено установить расширение Python — соглашаемся.
Установим приложение для потоковой передачи с камеры устройства, например IP Webcam. Главное требование к приложению — возможность транслировать с камеры поток понятный opencv, например rtsp. Разрешение видео потока настраиваем в зависимости от производительности устройства. На моем самое оптимальное 1280×720.
Запускаем трансляцию видео в IP Webcam и проект:
В заключение хочу отметить, что при наличии современного Android устройства его можно использовать как альтернативу raspberry pi. Так, например, сняв ограничения энергопотребления домашний планшет можно использовать как полноценный arm64 мини пк, работающий в фоне постоянно. При этом производительность у Termux вполне высокая.
Разрешение видео 1280×720
Далее несколько дополнений которые не вошли в основную статью
Для того чтобы иметь возможность обмениваться файлами между termux и android необходимо в выполнить команду
Теперь локальная память устройства примонтирована в
если ссылка не работает то руками качаем от сюда.
10 лучших редакторов кода Python для Android
Звучит довольно странно, не так ли?
Писать код на смартфоне — не так уж и просто, но уже сейчас существуют продвинутые приложения для этих целей, которые могут выполнять свои задачи как на стороне клиента, так и на стороне сервера.
Android-устройства же в любом случае сегодня есть у многих.
Все хотят научиться программировать, но ограничены определенными условиями. Как минимум тем, что для изучения основ необходим персональный компьютер.
В прошлом не было другого выбора, кроме как покупать ноутбук или стационарный ПК. И в худшем случае обладатели новых устройств быстро осознавали, что программирование — это не для них.
Однако в 2021 абсолютным новичкам можно не тратить деньги, а попробовать познакомиться с миром разработки с помощью мобильных приложений.
Почему бы не использовать сайты для программирования на телефоне
Еще одна особенность изучения программирования на смартфоне — необходимость писать код прямо на сайтах. Для этого можно использовать такие ресурсы, как W3Schools, Learnpython, Codeacademy и другие.
Редакторы этих сайтов достаточно продвинуты, но им все равно не хватает таких функций, как форматирование кода, отступы, подсветка синтаксиса и сохранение файлов.
В отдельных же приложениях все это есть. Они опираются на встроенные в них или онлайн-компиляторы. Такие вещи, как разные темы или подсветка синтаксиса, также доступны. Есть в них и такие функции, как расширенная клавиатура и автодополнение.
Pydroid 3
Это одна из лучших программ на сегодня, которая поддерживает интерпретатор Python 3.8, работающий целиком офлайн.
Также есть поддержка таких продвинутых библиотек, как NumPy, SciPy и matplotlib для анализа данных. Для машинного обучения есть Scikit Learn и TensorFlow. И даже для разработки приложений с графическим интерфейсом можно использовать Tkinter.
Есть и масса других вещей:
Особенности редактора
Стоимость
Acode
Простая и легкая IDE для Android, которая работает не только с Python, но и множеством других языков.
С помощью этой программы вы сможете написать программу на Python, а также сверстать веб-страницу, используя HTML, CSS и JavaScript. Вот что еще есть в этой программе:
Особенности редактора
Стоимость
Dcoder
Еще одна мобильная IDE со встроенным компилятором и поддержкой более 50 языков, включая C, C++, Python и Java. Также поддерживаются такие фреймворки, как React.js, Angular, Django, Flask, Flutter и другие.
По производительности это приложение сравнимо с Notepad++, Sublime Text и Eclipse. Также есть встроенные алгоритмические задачи разных уровней сложности.
Особенности редактора
Стоимость
Programming Hub
Это не отдельный редактор кода, а платформа для обучения со встроенным редактором. Приложение было разработано совместно с экспертами из Google. С ним процесс обучения превращается в игру, поэтому и подходит оно больше всего для начинающих.
Особенности редактора
Стоимость
Spck Code Editor
Это один из лучших редакторов кода на Android. Его можно установить в Google Play и сразу же начать использовать для написания кода на HTML, CSS, JavaScript, Python, Ruby, C++ или Java.
У него также есть поддержка подсветки синтаксиса для TypeScript и Emmet.
Особенности редактора
Стоимость
Creative IDE
Это не просто среда разработки, но еще и обучающая платформа. Приложение поддерживает десятки языков программирования и столько же фреймворков. Работает без интернета и поддерживает Python 2.7 и Python 3.
Отличная программа, в том числе и для начинающих разработчиков. Помимо редактора кода включает некоторые продвинутые функции.
Особенности редактора
Стоимость
QPython 3L
Еще один производительный и удобный редактор на Android — QPython 3L. У него есть такие встроенные функции, как QPYI, интерпретатор, среда выполнения и поддержка SL4A.
Подходит как для продвинутых разработчиков, так и для начинающих. Плюс, приложение бесплатное и с удобным интерфейсом.
Особенности редактора
Стоимость
Online Compiler
Это одно из лучших приложений, которое вполне может выступать в качестве редактора кода Python. Оно поддерживает больше 23 языков, работая без зависаний. Одно из основных отличий — работе в облаке, что позволило снизить размер самого приложения до 1,7 МБ.
Особенности редактора
Стоимость
Code Editor от Rythm Software
Это приложение предназначено для программирования и поддерживает более 100 языков. В нем есть такие функции, как подсветка синтаксиса, автодополнение, автоматические отступы и так далее. Интерфейс простой и логичный.
Особенности редактора
Стоимость
DroidEdit
Это редактор кода для смартфонов и планшетов на Android. Поддерживает несколько языков, включая разные версии Python. Лучше всего работает со внешними клавиатурами, как, например, у ASUS Transformer.
Есть бесплатная версия и платный вариант с поддержкой SSH и SFTP.
Особенности редактора
Стоимость
Есть ли способ запустить Python на Android?
Мы работаем над версией S60, и на этой платформе есть хороший API Python.
Один из способов – использовать Kivy :
Библиотека Python с открытым исходным кодом для быстрой разработки приложений, использующих инновационные пользовательские интерфейсы, такие как приложения с несколькими касаниями.
Kivy работает на Linux, Windows, OS X, Android и iOS. Вы можете запустить такой же код [python] на всех поддерживаемых платформах.
Приложение Kivy Showcase
Существует также проект Android Scripting Environment (ASE). Он выглядит потрясающе, и он имеет некоторую интеграцию с родными компонентами Android.
Пример через Matt Cutts – «вот сканер штрих-кода, написанный в шести строках кода Python:
Там также есть SL4A, написанный сотрудниками Google.
«Подраздел Pygame для Android – это порт подмножества функций Pygame для платформы Android. Цель проекта – создать Android-специфические игры и упростить перенос игр с ПК-подобных платформ на Android «.
Примеры включают полную игру, упакованную в APK, что довольно интересно.
Я опубликовал инструкции и патч для перекрестного компиляции Python 2.7.2 для Android, вы можете получить его в моем блоге здесь: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android /
Как любитель Python и Android-программист, мне грустно говорить, что это не очень хороший способ. Есть две проблемы.
Одна из проблем заключается в том, что для инструментов разработки Android существует намного больше, чем просто язык программирования. Большая часть графики Android включает файлы XML для настройки дисплея, аналогичные HTML. Встроенные объекты Java действительно интегрированы с этим XML-макетом, и это намного проще, чем писать собственный код, чтобы перейти от логики к растровому изображению.
Другая проблема заключается в том, что G1 (и, вероятно, другие устройства Android для ближайшего будущего) действительно не так быстр. 200 МГц и RAM очень ограничены. Даже в Java вы должны сделать приличное количество переписывания, чтобы избежать большего создания объектов, если вы хотите сделать ваше приложение совершенно гладким. Python будет слишком медленным на некоторое время на мобильных устройствах.
Сценарий Scripting Layer для Android делает то, что вы хотите. Вы можете легко установить его прямо на свое устройство со своего сайта и не нуждаться в корне.
Каждый язык имеет практически тот же API. Вы даже можете использовать JavaScript API внутри webviews.
Пользовательские интерфейсы
Для пользовательских интерфейсов у вас есть три варианта:
Вы можете смешивать параметры, поэтому вы можете иметь веб-интерфейс для основного интерфейса и по-прежнему использовать собственные диалоги.
QPython
QPython дает вам более удобный интерфейс для управления вашей установкой и включает в себя небольшой редактор кода сенсорного экрана, оболочку Python и оболочку PIP для управления пакетами. Они также имеют порт Python 3. Обе версии доступны в Play Store бесплатно. QPython также связывает библиотеки из группы Python в проектах Android, включая Kivy, поэтому это не просто SL4A.
Обратите внимание, что QPython по-прежнему развивает свою вилку SL4A (хотя и не очень, если честно). Сам проект SL4A в значительной степени мертв.
Не сейчас, и вам повезет, что скоро Jython начнет работать. Если вы планируете начать разработку сейчас, вам будет лучше с тем, чтобы придерживаться Java на данный момент.
Этот маршрут будет иметь некоторые интересные особенности:
Я хочу опубликовать это как расширение того, что @JohnMudd уже ответил ( но, пожалуйста, расскажите мне, как английский не мой первый язык )
С собственным KV- языком Kivy можно легко легко конструировать и легко создавать интерфейс GUI (это похоже на Java XML, но вместо TextView и т. Д., У KV есть свои ui.widgets для аналогичного перевода), что, на мой взгляд, Довольно легко принять.
В настоящее время Buildozer и python для Android являются наиболее рекомендуемыми инструментами для создания / упаковки ваших приложений. Попробовав их обоих, я могу с уверенностью сказать, что они создают для Android приложения с Python. Пользователи, которые чувствуют себя комфортно в своих консольных / терминальных / командных приглашениях, не должны иметь проблем с их использованием, а их руководства также хорошо документированы.
При всем том, что пользователи с хорошим знанием Python не должны беспокоиться о том, чтобы собрать основы в неделях (если не дни), чтобы создать несколько простых приложений.
Иногда ваше приложение требует функциональности, которая выходит за рамки того, что может предоставить Kivy. В этих случаях необходимо обращаться к внешним библиотекам программного обеспечения. Учитывая богатство экосистемы Python, уже существует большое количество программных библиотек, которые вы можете просто импортировать и использовать сразу.
Мой опыт работы в Kivy заключается в том, что он будет лучше всего соответствовать сезонным программистам на Python и некоторому серьезному программисту, который хочет быстрой разработки или простого обслуживания базы кода. Он хорошо работает на нескольких платформах, хотя и не на уровне собственного чувства.
Я надеюсь, что больше программистов Python / app найдут мою небольшую информацию полезной и начнут смотреть на Kivy, она может только улучшиться (с большим количеством поддержки и библиотек / модулей портироваться), если у сообщества есть большие интересы.
PSI не имеет никаких отношений с Kivy, я всего лишь программист, которому действительно нравится идея привлекать Python-кодирование к мобильной / кросс-платформенной разработке.
С сайта Python для android :
Python для android – это проект для создания собственного дистрибутива Python, включая модули, которые вы хотите, и создания apk, включая python, libs и ваше приложение.
Это встраивает непосредственно интерпретатор Python в ваше приложение apk.
Вы можете изучить примеры python для sl4a.
Также есть python-on-a-chip, возможно, работает mosync: google group
Не видел этого, опубликованного здесь, но вы можете сделать это с Pyside и Qt, теперь Qt работает на Android благодаря Necessitas.
В настоящий момент это похоже на kludge, но в конечном итоге может стать жизнеспособным маршрутом …
Другим вариантом, если вы ищете 3.4.2 или 3.5.1, является этот архив на GitHub.
Python3-Android 3.4.2 или Python3-Android 3.5.1
В настоящее время он поддерживает Python 3.4.2 или 3.5.1 и 10d версию NDK. Он также может поддерживать 3,3 и 9c, 11c и 12
В настоящее время я использую это для запуска raw Python на устройствах Android. С помощью нескольких модификаций файлов сборки вы также можете сделать x86 и armeabi 64 бит
Вы можете использовать приложение Termux :
Обратите внимание, что apt install python install python 3. для python 2 вы вызываете apt install python2.
Вы можете использовать QPython :
Он имеет консоль Python, редактор, а также управление пакетами / инсталляторы
В playstore есть приложение под названием QPython3, которое можно использовать для редактирования и запуска скрипта python.
Другое приложение, называемое Termux, в котором вы можете установить python с помощью команды
Еще одним вариантом является pyqtdeploy, который ссылается на документы:
Инструмент, который вместе с другими инструментами, поставляемыми с Qt, позволяет развертывать приложения PyQt4 и PyQt5, написанные с помощью Python v2.7 или Python v3.3 или новее. Он поддерживает развертывание на настольных платформах (Linux, Windows и OS X) и на мобильных платформах (iOS и Android).
Согласно развертыванию приложения PyQt5 на Android через pyqtdeploy и Qt5, он активно развивается, хотя трудно найти примеры работающих приложений для Android или учебник о том, как перекрестно скомпилировать все необходимые библиотеки на Android. Это интересный проект, который нужно помнить!
Полноценное 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.
В следующей своей статье, я расскажу более подробно о процессе написания приложения «с нуля», расжевывая каждую строчку кода.
Хотелось бы сразу пресечь холивары на тему «для android только java, python не нужен». Я считаю, не важно, какие технологии «под капотом», главное чтоб приложение было качественным.
Сфера применения kivy может быть огромной. Сейчас на моем счету несколько приложений, написанных под заказ, где python с фремворком kivy показал себя с хорошей стороны. Например, ровно за один час, было написано приложение, для сети сервисных центров. Приложение работает в режиме киоска и установлено на дешевые китайские планшеты, которые висят в холле. Клиент набирает номер заказа, далее по WiFi планшет соединяется с сервером и сообщает статус заказа.