Каковы различия между задачами сборки 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
+ check
(и check
- это test
+ любые задачи по линтингу).
Ответ 3
Это правда, что в соответствии с gradle tasks
, похоже, build
является надстройкой assemble
, включая тесты. Но (!) Из моего короткого опыта это действительно выглядит так, как будто это не так.
Поэтому я выполнил эти 2 команды в командной строке, используя упаковщик gradle с флагом --scan, после запуска каждый раз clean. Это сравнение:
- Желаемые встроенные файлы:
- После запуска
assembleDebug
я получил все необходимые файлы - файлы *.apk
и *.aar
. - После запуска
buildDebug
меня не было ни одного из этих файлов.
- Количество заданий, выполненных в соответствии с проверками:
-
assembleDebug
- 109 заданий -
buildDebug
- 91 buildDebug
- Количество зависимостей по данным сканирования:
-
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
.
Как видите, я не очень понимаю различия, но это то, что я выяснил. Если кто-то может объяснить это мне и другим пользователям, читающим здесь, это может быть здорово :) Спасибо!