Если я не ошибаюсь, gradle assemble запускает gradle assembleDebug и gradle assembleRelease, но я считаю, что gradle build тоже делает то же самое, так что между ними оба?
Каковы различия между задачами сборки Gradle и сборки Gradle?
Ответ 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 + check (и check - это test + любые задачи по линтингу).
Ответ 3
Это правда, что в соответствии с gradle tasks, похоже, build является надстройкой assemble, включая тесты. Но (!) Из моего короткого опыта это действительно выглядит так, как будто это не так.
Поэтому я выполнил эти 2 команды в командной строке, используя упаковщик gradle с флагом --scan, после запуска каждый раз clean. Это сравнение:
- Желаемые встроенные файлы:
- После запуска
assembleDebugя получил все необходимые файлы - файлы*.apkи*.aar. - После запуска
buildDebugменя не было ни одного из этих файлов.
- После запуска
- Количество заданий, выполненных в соответствии с проверками:
-
assembleDebug- 109 заданий -
buildDebug- 91buildDebug
-
- Количество зависимостей по данным сканирования:
-
assembleDebug- 172 из 20 конфигураций -
buildDebug- 104 из 18 конфигураций - Кажется, причина, по которой они различаются, заключается в том, что в
assembleDebugв 2 из 3 моих подпроектов (которые являются библиотеками Java, а не app) есть еще одна конфигурация, называемаяlintClassPath. Эта конфигурация отсутствует вbuildDebug.
-
- Еще один момент упомянуть о том, что, когда я искал в списке задач, казалось,
buildDebugне называлassembleDebugзадачи иassembleDebugне называютbuildDebugзадач. - И последняя интересная вещь, которую следует упомянуть в этом контексте, - это то, что когда я запускал сборку из Android Studio (
Build → Make Project), я вижу в своем сканировании, что команда, которая фактически выполнялась, былаassembleDebug. Точнее, он запустился:app:assembleDebug.
Как видите, я не очень понимаю различия, но это то, что я выяснил. Если кто-то может объяснить это мне и другим пользователям, читающим здесь, это может быть здорово :) Спасибо!