Что означают команды buildozer при создании приложений для android?

Рейтинг: 1Ответов: 1Опубликовано: 27.02.2023

В документации 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. Логи мало что дали, пытаюсь разобраться куда именно я тыкал

Ответы

▲ 2

Приложения для телефона я не собирал тоже, однако все команды тут стандартны для индустрии в целом.

Для начала смотрите цепочку терминов что происходит с программой:

исходники
   |   |    разрешение зависимостей
   | зависимости
   |   |    сборка (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 - вы знаете что можно использовать.