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 :例如,如果你有 freepaid 两种产品风味,assemble 会生成:
    • freeDebugfreeRelease
    • paidDebugpaidRelease
使用场景
  • 需要一次性构建所有变体(如 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/Releaseother 分组?

  • 历史原因 :Gradle 将"非标准"任务归类到 other,而 assemble 是通用聚合任务。
  • 实际无影响:分组仅是 UI 展示逻辑,功能完全正常。

6. 如何选择?

推荐方式

使用 assembleRelease (生成 Release 版 AAR)或 assembleDebug(生成 Debug 版 AAR):

  • 路径 :Gradle → 模块名otherTasksbuildassembleRelease/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(但通常仅在自动化流程中使用)。
相关推荐
二川bro11 分钟前
在Cursor中启用WebStorm/IntelliJ风格快捷键
ide·webstorm
奔跑吧 android2 小时前
【android bluetooth 协议分析 01】【HCI 层介绍 8】【ReadLocalVersionInformation命令介绍】
android·bluetooth·hci·bt·hcicmd·readlocalver·bt5.3
私人珍藏库2 小时前
[Android] 安卓彩蛋:Easter Eggs v3.4.0
android
androidwork3 小时前
Android Kotlin权限管理最佳实践
android·java·kotlin
DpHard3 小时前
自用Vscode 配置c++ debug环境
c++·ide·vscode
MonkeyKing_sunyuhua3 小时前
项目删除了,为什么vscode中的git还是存在未提交记录,应该怎么删除掉
ide·git·vscode
fluxcode5 小时前
Visual Studio构建三剑客:生成/重新生成/清理解决方案深度解析
ide·其他·visual studio
我命由我123455 小时前
Android 动态申请 REQUEST_INSTALL_PACKAGES 权限问题:申请权限失败
android·java·开发语言·java-ee·android studio·android jetpack·android-studio
追随远方6 小时前
深入解析OkHttp与Retrofit:Android网络请求的黄金组合
android·okhttp·retrofit
我教你啊7 小时前
IDE 使用技巧与插件推荐
ide