Android Studio 中 build、assemble、assembleDebug 和 assembleRelease 构建 aar 的区别
上一篇:Tasks中没有build选项的解决办法
概述:
在构建 aar 包时通常会在下面的选项中进行构建,但是对于如何构建,选择哪种方式构建我还是处于懵逼状态,所以我整理了一下几种构建方式的区别以及如何选择。
1. build
(位于 build
分组下)
build
会同时执行 assemble
+ check
(包含 lint 检查等),速度较慢,且通常不需要额外检查步骤。
2. assemble
(位于 build
分组下)
作用
- 构建所有变体(Variants):包括 Debug、Release 以及其他自定义构建类型(如
Staging
)和产品风味(Product Flavors)的组合。 - 生成所有可能的 AAR/APK:例如,如果你有
free
和paid
两种产品风味,assemble
会生成:freeDebug
、freeRelease
paidDebug
、paidRelease
使用场景
- 需要一次性构建所有变体(如 CI/CD 环境打包全部分发版本)。
- 不关心具体构建类型时(但会显著增加构建时间)。
输出路径
/build/outputs/aar/├── module-name-free-debug.aar├── module-name-free-release.aar├── module-name-paid-debug.aar└── module-name-paid-release.aar
3. assembleDebug
/ assembleRelease
(位于 other
分组下)
作用
- 针对单一构建类型:
assembleDebug
:仅构建 Debug 版本(未优化,含调试符号)。assembleRelease
:仅构建 Release 版本(经过 ProGuard 优化,无调试信息)。
使用场景
- 日常开发中快速生成 Debug 版 AAR 供测试。
- 发布时明确需要 Release 版 AAR(优化后的正式版本)。
输出路径
/build/outputs/aar/├── module-name-debug.aar # assembleDebug└── module-name-release.aar # assembleRelease
4. 关键区别
Task | 构建范围 | 构建速度 | 典型用途 |
---|---|---|---|
assemble | 所有变体(Debug+Release+Flavors) | 慢 | 全量构建(如 CI 打包所有版本) |
assembleDebug | 仅 Debug 版本 | 快 | 开发调试 |
assembleRelease | 仅 Release 版本 | 中等 | 正式发布或分发给第三方 |
5. 为什么 assembleDebug/Release
在 other
分组?
- 历史原因:Gradle 将“非标准”任务归类到
other
,而assemble
是通用聚合任务。 - 实际无影响:分组仅是 UI 展示逻辑,功能完全正常。
6. 如何选择?
✅ 推荐方式
使用 assembleRelease
(生成 Release 版 AAR)或 assembleDebug
(生成 Debug 版 AAR):
-
路径:Gradle →
模块名
→other
→Tasks
→build
→assembleRelease
/assembleDebug
-
生成位置:
/module-name/build/outputs/aar/module-name-release.aar /module-name/build/outputs/aar/module-name-debug.aar
❌ 不推荐直接使用 build
Task
build
会同时执行assemble
+check
(包含 lint 检查等),速度较慢,且通常不需要额外检查步骤。- 如果只是需要 AAR,直接运行
assembleRelease
更高效。
总结
- 开发阶段:用
assembleDebug
(快速生成调试版)。 - 发布阶段:用
assembleRelease
(生成优化后的正式版)。 - 批量构建:用
assemble
(但通常仅在自动化流程中使用)。