Привет.
Меня тут увлекла мобильная разработка и я начал потихоньку делать своей проект. Для старта выбрал Python + Kivy.
Хочу рассказать о историю с которыми я воевал 7 дней, что бы Вы не прыгали по граблям как я.
Почему так долго? Причина в том что установка образов iso и первый debug на buildozer занимает много времени в среднем 35+ мин.
Что не нужно было делать:
Спустя 8 запоротых виртуалок и 7 дней я понял что НЕ работают варианты:
- Вот этот
- Вот этого видео (либо у меня кривые руки)
Частично работают варианты с офф мануала (на удивление):
- Create a package for Android — Kivy 2.0.0 documentation
- Installation — Buildozer 0.11 documentation
P.S Данные варианты у меня взлетели с 5 попытки. Видимо зря я обновлял предустановленный python, но об этом далее.
Start
Установить kivy и kivyMD на рабочую систему не так сложно.
Для этого я установил Pycharm, создал новый проект, провалился через терминал в venv (source venv/scripts/activate)
И начал накидывать через pip фреймворки.
pip install kivy (ссылка)
pip install kivymd (ссылка)
(Рекомендую так же сразу поставить cython)
Использовал я Python3.9 уже установленный на систему по этому ставить его еще раз нет нужды для меня.
Problem 1
Как казалось что сделать и запустить визуальное окно
Проблема образовалась сразу. Как это закинуть на телефон.
Как выяснилось нужно собирать apk (что не удивительно). Но главный нюанс в том что OS Windows для этого не подходит. Нужен Unix подобная (Ubuntu, Xubuntu, Lubuntu, MacOS).
Это меня чутка расстроила.
MacOS у меня есть, но т.к я знал что первый и последующие блины будут комом я не стал что то на ней делать.
Выбрав обычный VirtualBox я скачал Ubuntu 20.04 и мой квест начался.
Сразу скажу что до устанавливать Python 3.9. На версии 20.04 стоит 3.8 и этого достаточно.
Problem 2
После всех попыток из офф мануалов и видео с youtube, при попытке buildozer android debug я ловил ошибку.
# Command failed: /usr/bin/python3 -m pythonforandroid.toolchain create --dist_name=myapp --bootstrap=sdl2 --requirements=python3,kivy --arch armeabi-v7a --copy-libs --color=always --storage-dir="/home/develop/tk/.buildozer/android/platform/build-armeabi-v7a" --ndk-api=21 --ignore-setup-py
Супер...
Переставляю виртуалку. Действую по другому. Ставлю Ubuntu 18 и Lubuntu все тоже самое.
На habr мне предоставили уже готовую виртуалку для сборки kivy. Она работает, но как всегда нюансы:
- нужно удалить android NDK 19 и установить 19C
- нет места что бы поставить поверх
- Место 12Гб и его не увеличить даже спец командами --size 30000 т.к крашится ошибка в значениях.
- Я не нашел в списке указанный android NDK 19 и не понял как его удалить. (пробовал разные варианты - sudo apt remove android...)
На 8 переустановку я понял что видимо я что то делаю не то.
Поставил по мануалу на чистую систему Lubuntu. Назвал файл main.py и оно взлетело.
Точнее сказать прошел debug без краша. За ним сделал deploy и все собирается.
Результат
Думал что закончится все хорошо и можно переходить к верстке приложения, но не тут то было.
Я установил 2 виртуалки Lubuntu и Ubuntu с одинаковой настройкой т.к прочитав на формах что косяк может быть из за самой виртуальной машины.
В обоих случаях apk собирается, но когда я скидываю его себе на телефон он устанавливается и запускается и стразу закрывается =( Что меня расстроило.
Установив заново виртуалку с habr я собрал apk в ней и закинул к себе на телефон. Сборка взлетела...
На данный момент я грешу на android NDK.
Либо он стоит старый, либо не стоит вовсе.
Истина где то рядом.