Каковы различия между задачами сборки Gradle и сборки Gradle?

Если я не ошибаюсь, gradle assemble запускает gradle assembleDebug и gradle assembleRelease, но я считаю, что gradle build тоже делает то же самое, так что между ними оба?

Ответ 1

Assemble построит ваши артефакты, и сборка будет собирать ваши артефакты с дополнительными проверками.

build зависит от assemble, поэтому build является своего рода надмножеством assemble

Вы можете посмотреть задачи, которые будут выполняться с помощью флага --dry-run. например.

gradlew build --dry-run

Вы увидите, что кроме assemble также будут выполняться lint и test.

Ответ 2

Из gradle tasks --all:

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.

build - это эффективная assemble + checkcheck - это test + любые задачи по линтингу).

Ответ 3

Это правда, что в соответствии с gradle tasks, похоже, build является надстройкой assemble, включая тесты. Но (!) Из моего короткого опыта это действительно выглядит так, как будто это не так.

Поэтому я выполнил эти 2 команды в командной строке, используя упаковщик gradle с флагом --scan, после запуска каждый раз clean. Это сравнение:

  1. Желаемые встроенные файлы:
    • После запуска assembleDebug я получил все необходимые файлы - файлы *.apk и *.aar.
    • После запуска buildDebug меня не было ни одного из этих файлов.
  2. Количество заданий, выполненных в соответствии с проверками:
    • assembleDebug - 109 заданий
    • buildDebug - 91 buildDebug
  3. Количество зависимостей по данным сканирования:
    • assembleDebug - 172 из 20 конфигураций
    • buildDebug - 104 из 18 конфигураций
    • Кажется, причина, по которой они различаются, заключается в том, что в assembleDebug в 2 из 3 моих подпроектов (которые являются библиотеками Java, а не app) есть еще одна конфигурация, называемая lintClassPath. Эта конфигурация отсутствует в buildDebug.
  4. Еще один момент упомянуть о том, что, когда я искал в списке задач, казалось, buildDebug не называл assembleDebug задачи и assembleDebug не называют buildDebug задач.
  5. И последняя интересная вещь, которую следует упомянуть в этом контексте, - это то, что когда я запускал сборку из Android Studio (Build → Make Project), я вижу в своем сканировании, что команда, которая фактически выполнялась, была assembleDebug. Точнее, он запустился :app:assembleDebug.

Как видите, я не очень понимаю различия, но это то, что я выяснил. Если кто-то может объяснить это мне и другим пользователям, читающим здесь, это может быть здорово :) Спасибо!