Что означают команды buildozer при создании приложений для android?
В документации buildozer есть описание доступных команд. Но они не очень понятны человеку, который никогда раньше не собирал приложения для телефона. Можете объяснить для самых маленьких и тупых в чем их суть? В частности эти интересуют:
Target commands:
clean Clean the target environment # что именно очищается? что-то удаляется?
update Update the target dependencies # а какой командой можно вывести зависимости, чтобы понять что именно обновляется? и когда их нужно обновлять?
debug Build the application in debug mode # в чем отличие debug от release? .apk в итоге будут отличаться?
release Build the application in release mode # когда выбрать debug, а когда release?
deploy Deploy the application on the device # что именно означает "развертывание" приложения? хоть с неё хоть без неё будет в итоге один .apk файл?
run Run the application on the device # зачем нужна эта команда, если в итоге создается .apk, а не запускается приложение?
serve Serve the bin directory via SimpleHTTPServer # вряд ли мне это надо, но раз она тоже в этом списке, может и по ней подскажете?
Ещё в найденных мной примерах старых версий buildozer.spec есть строки
# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64
android.arch = armeabi-v7a
Я же правильно понимаю, что это поддерживаемая архитектура телефона? Есть ли смысл не заморачиваться, и всегда писать так:
android.archs = arm64-v8a, armeabi-v7a
или у множественного указания есть свои подводные камни?
Собранное мной методом тыка приложение вылетает и на телефоне, и в эмуляторе Android Studio. Логи мало что дали, пытаюсь разобраться куда именно я тыкал
Ответы (1 шт):
Приложения для телефона я не собирал тоже, однако все команды тут стандартны для индустрии в целом.
Для начала смотрите цепочку терминов что происходит с программой:
исходники
| | разрешение зависимостей
| зависимости
| | сборка (build)
бинарники, пакеты и т.п.
| развёртывание (deploy)
установленная программа
| запуск
запущенная программа
Теперь смотрим на команды.
clean очищает "target environment". Target в данном случае - это термин buildozer, который означает целевое устройство. Environment - это термин venv, который означает окружение с установленными модулями Питона. Получается, что clean очищает все загруженные зависимости для указанного целевого устройства. Возможно, clean также удаляет все результаты сборки и временные файлы (зависит от того, лежат ли они внутри environment, скорее всего да).
update обновляет зависимости. Сами зависимости определяются, как написано в документации, в файле buildozer.spec, смотреть их список можно, видимо, там же. или же можно заглянуть в каталог окружения venv (поищите его в проекте).
debug и release - это стандартное разделение между конфигурациями сборки. Первая конфигурация рассчитана на запуск разработчиком, с выводом максимума отладочной информации в случае ошибок. Вторая конфигурация рассчитана на запуск в рабочем режиме, с максимально порезанной отладочной информацией ради производительности и конфиденциальности.
Чем конкретно различаются эти конфигурации - видимо, только проверять методом тыка. Что я нашёл сходу - так это то, что в debug-режиме на андроиде создаётся apk, а в релизе создаётся aab.
Команда deploy означает, что собранный пакет с приложением будет установлен либо на подключенном телефоне, либо в эмуляторе.
Команда run предусматривает именно запуск приложения, если вместо этого всего лишь создаётся apk файл - у вас что-то не работает. Например, телефон не подключен.
Команда serve говорит сама за себя, она запускает веб-сервер, раздающий файлы из указанной папки. Зачем это требуется - не знаю, но если вам в какой-то момент понадобится раздать собранный бинарник по HTTP - вы знаете что можно использовать.