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(但通常仅在自动化流程中使用)。
相关推荐
千里马学框架4 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台4 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone4 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc4 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo4 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077004 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼4 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone4 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen4 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone4 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui