Очень намучался с этой темой поэтому для себя и для людей фиксирую пошагово.
Началось с того, что изучил фреймворк Kivy и наконец осуществил свою давнюю задумку: написал приложение для детской футбольной команды(сейчас детей к чему то можно привлечь только через гаджеты). Приложение писал на языке Python в PyCharm(много было моментов возможно напишу отдельную статью), в итоге с моей занятостью ушло пару месяцев и получилось структурированное приложение(пакет из десятка модулей) с организованным импортом и т.п.
Опять же в Пайчарме всё отладил, всё работало как часы(уже после компиляции всплыли косяки со шрифтами, координатами и т.д., очень обидно!!! но об этом опять же в другой статье).
Всё, дошло дело до преобразование имеющегося кода на Питоне в полноценное приложение(APK файл), это процедура называется компиляцией. Первый сюрприз который меня ждал это то, что компиляция производится с помощью специального модуля Buildozer и только в Линуксе. Всё же в андроид студии было бы удобнее в разы(данное ПО не поддерживает Питон). Я работаю в Windows 10. Тут есть два решения:
Первое это использовать Windows Subsystem for Linux (WSL), это просто быстро, можно изначально поиграться на мелких проектах. Несколько простых приложений так скомпилировал, но когда начал работать над крупным отказался от этого варианта, очень много косяков всплыло в первую очередь постоянно требует установить какие то моду то Линуксовые то Питоновские.
- правой кнопкой на меню пуск, WindowsPowerShell (администратор), wsl --install, перезагрузка.
- переходим в папку с проектом через консоль WSL(cd и т.д. тут нужны уже знания команд Линукс). Или на папке, в которой находит основной файл программы (или внутри этой папки на пустом месте), и нажимаем сочетание Shift+ПКМ. В контекстном меню добавится новый пункт "Откройте здесь оболочку Linux", нажимаем туда.
sudo apt update
sudo apt upgrade
sudo apt install -y git zip unzip openjdk-17-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev
pip3 install --user --upgrade Cython==0.29.33 virtualenv
export PATH=$PATH:~/.local/bin/
pip3 install --user --upgrade buildozer
buildozer init
# сформируется файл настроек buildozer.spec заполняем его(это другая тема)
buildozer android debug deploy run
Потом часа 2 будет подгружать, формировать новые файлы, помню при удалении у меня их было аж 300 000 шт. Потом всё будет значительно быстрее.
Файл .apk будет в папке bin, дальше его можно скидывать на телефон.
____________________________________
Второе это создать виртуальную машину на базе Ubuntu. Кажется чем то страшным, но в итоге всё довольно просто и даже интересно.
Hyper-V уже встроена в Windows её лишь нужно активировать.
Я делал с помощью PowerShell:
- Откройте консоль PowerShell от имени администратора.
- Выполните команду:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
- После завершения установки перезагрузите компьютер.
Запускаем Убунту и уже работает далее там.
Далее в терминале ставим всё необходимое:
sudo apt-get install python3
sudo apt-get install python3-pip
sudo apt update
sudo apt install -y git zip unzip openjdk-17-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev
pip3 install cython
sudo apt install git
git clone https://github.com/kivy/buildozer
cd buildozer #переходим в папку Buildozer
sudo python3 setup.py install
Перекидываем наш готовый kivy файл с Windows в Убунту через яндекс диск это самый простой вариант(потом как я можете заморочиться и создать общую папку через пакет Samba). ИМЯ ФАЙЛА ОБЯЗАТЕЛЬНО ДОЛЖНО БЫТЬ «main.py» иначе компиляция прервется.
Запускаем терминал с папки где у вас лежит main.py.
buildozer init
Формируется buildozer.spec, заполняем его по документации: https://buildozer.readthedocs.io/en/latest/specifications.html
Вкраце:
[app]
# (str) Title of your application
title = My Application
Название приложения, которое будет отображаться на рабочем экране смартфона.
# (str) Package name
package.name = myapp
Название приложения.
# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy
В этом пункте необходимо указать сторонние библиотеки, которые используются в вашем коде.
Библиотеки перечисляются через запятую, без пробелов.
# (str) Presplash of the application
#presplash.filename = %(source.dir)s/data/presplash.png
Изображение экрана загрузки вашего приложения
Обратите внимание, что строку нужно раскомментировать, т.е. убрать знак #
# (str) Icon of the application
#icon.filename = %(source.dir)s/data/icon.png
Иконка вашего установленного приложения. В моем случае это
____________________________________________-
Начинаем:
buildozer android debug deploy run
Если так всё пойдёт то отлично, но у меня ругался на отсутствие виртуального окружения, создал так:
sudo apt install python3-venv -y
mkdir my_python3_project
cd my_python3_project
python3 -m venv nosta
Всё теперь точно запускаем
buildozer android debug deploy run
Всё процесс пошёл в первый раз часа на два, по том у меня скомпилировалось за 2 минуты. В процессе может остановиться выполнение и начать ругаться на отсутствие какого-нибудь пакета, у меня по сравнению с WSL(первый способ) ругался один раз на пакет cython(хотя ранее я его ставил) ставим:
sudo apt-get install cython
Жмём опять
buildozer android debug deploy run
Всё готовые APK будут храниться в папке bin
Далее забираем через яндекс диск на телефон и проверяем если есть косяки/баги то забираем на Винду и запускаем через Android Studio
Android Studio очень функционально приложение, тут необходимо будет почитать. Очень жаль конечно, что нельзя работать с Питоном сразу в Android Studio (через костыли вроде можно, но у меня не получилось).
Всем удачи. Будут вопросы пишите.