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