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(但通常仅在自动化流程中使用)。
相关推荐
Aevget1 小时前
「Java EE开发指南」如何用MyEclipse开发Java EE企业应用程序?(二)
java·ide·java-ee·开发·myeclipse
luckys.one2 小时前
第12篇|[特殊字符] Freqtrade 交易所接入全解:API、WebSocket、限频配置详解
网络·ide·python·websocket·网络协议·flask·流量运营
T - mars3 小时前
Pycharm中使用git
ide·git·pycharm
用户2018792831674 小时前
ANR之RenderThread不可中断睡眠state=D
android
煤球王子4 小时前
简单学:Android14中的Bluetooth—PBAP下载
android
小趴菜82274 小时前
安卓接入Max广告源
android
齊家治國平天下4 小时前
Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
android·anr
ZHANG13HAO4 小时前
Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
android
【ql君】qlexcel4 小时前
Android 安卓RIL介绍
android·安卓·ril
写点啥呢4 小时前
android12解决非CarProperty接口深色模式设置后开机无法保持
android·车机·aosp·深色模式·座舱