./gradlew assembleDebug和gradle build区别

一、./gradlew assembleDebug和gradle build区别

./gradlew assembleDebug
  • 核心功能 :仅编译并打包Debug 版本 的 APK(或 AAB),是针对性的构建命令

  • 执行范围

    • 只执行和 "Debug 包构建" 相关的任务:编译代码 → 生成 Debug 签名 → 打包成 APK(路径:app/build/outputs/apk/debug/app-debug.apk)。
    • 不会执行测试代码编译、单元测试、Release 包构建等无关任务。
    • 是安卓开发中最常用的命令(日常调试、安装测试都用这个)。
  • 示例执行效果

    bash

    运行

    复制代码
    ./gradlew assembleDebug
    # 执行完成后,仅生成 debug 包,无其他额外输出
gradle build
  • 核心功能 :执行项目全量构建 ,是全覆盖的构建命令 (若用 ./gradlew build 则是用 wrapper 执行全量构建)。

  • 执行范围

    • 包含 assembleDebug + assembleRelease:同时生成 Debug 和 Release 两个版本的安装包。
    • 额外执行测试相关任务:编译测试代码、运行单元测试、检查代码规范等。
    • 执行检查类任务:如 lint(代码静态检查)、check(测试结果校验)等。
    • 输出文件:同时生成 app-debug.apk 和 Release 版本包(若未配置 Release 签名信息,默认生成无签名的 app-release-unsigned.apk;若已配置 Release 签名,生成带正式签名的 app-release.apk)。
  • 示例执行效果

    bash

    运行

    复制代码
    gradle build
    # 执行完成后,生成 debug + release 包,还会输出测试报告、lint 报告等

详细对比表

特性 ./gradlew assembleDebug gradle build
Gradle 版本来源 项目自带的 Gradle Wrapper(推荐) 本地全局安装的 Gradle
构建范围 仅 Debug 包 全量构建(Debug+Release + 测试)
执行速度 快(仅核心任务) 慢(包含大量额外任务)
输出文件 仅 debug 包 debug 包 + release 包 + 测试报告
适用场景 日常开发、调试、快速安装测试 发布前全量验证、打包所有版本

二、补充说明

  1. 为什么优先用 gradlew 而非 gradle :团队协作时,不同开发者本地 Gradle 版本可能不一致,gradlew 会自动匹配项目的 gradle-wrapper.properties 中指定的版本,避免 "本地能跑、同事跑不了" 的问题。正确的全量构建写法应该是 ./gradlew build(而非 gradle build)。

  2. 其他常用衍生命令

    • ./gradlew assembleRelease:仅生成 Release 包(需配置签名)。
    • ./gradlew clean:清空构建缓存(编译报错时常用)。
    • ./gradlew clean assembleDebug:清空缓存后重新生成 Debug 包。

三、总结

  1. 核心差异:assembleDebug轻量、针对性 构建(仅 Debug 包),build全量、全覆盖构建(Debug+Release + 测试)。
  2. 版本选择:优先用 ./gradlew(Wrapper)而非全局 gradle,避免版本兼容问题。
  3. 场景适配:日常开发用 assembleDebug(快),发布前验证用 ./gradlew build(全)。
相关推荐
执明wa14 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio
404_coder15 小时前
源码视角下的 Android 开机流程:从 Zygote、SystemServer 到 Launcher
android
二流小码农15 小时前
鸿蒙开发:以登录案例了解代码架构MVVM
android·ios·harmonyos
用户693717500138416 小时前
从代码生产者到 AI 协作者:软件工程师的角色重构
android·前端·后端
GitLqr16 小时前
别在 Flutter 的 main() 里乱锁屏幕方向,小心 iPad 分屏功能被你搞没了
android·flutter·ios
sg_knight16 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
爱笑鱼16 小时前
Binder(四):ioctl(BINDER_WRITE_READ) 之后,事务怎样到达目标进程?
android
AFinalStone17 小时前
Android 7系统休眠唤醒(二)开机全链路—BootROM到Launcher
android·电源管理·休眠唤醒
Mr YiRan17 小时前
Android NDK开发之统计到未被回收的图片
android