./gradlew bundleRelease 是最直接可靠的生成 AAB 方式,无需 Android Studio,适用于 CI/CD;默认输出 app/build/outputs/bundle/release/app-release.aab,需配置 signingConfigs 以满足 Google Play 签名要求。

./gradlew bundleRelease是最直接、最可靠的生成 AAB 的方式,不需要 Android Studio 界面介入,适合 CI/CD 和本地快速验证。
命令行执行 bundleRelease 任务
在项目根目录运行该命令即可触发完整构建流程并输出 AAB:
- 默认输出路径是
app/build/outputs/bundle/release/app-release.aab - 它会自动使用
release构建类型,走完整的编译 → 资源处理 → DEX 优化 → AAB 打包链路 - 若未配置签名,会生成未签名的 AAB;Google Play 要求必须签名,所以生产环境需提前在
build.gradle中声明signingConfigs - 不依赖 Android Studio GUI,脚本化友好,比如 Jenkins 或 GitHub Actions 中可直接调用
build.gradle 中必须启用 AAB 支持
从 AGP 3.2+ 开始,AAB 是原生支持的,但某些旧插件或定制配置可能隐式禁用。确认以下两点:
- 模块级
build.gradle中没有设置android.useAndroidX = false或其他导致构建插件降级的配置 - 项目根目录
gradle.properties中建议显式添加:android.bundle.enableUncompressedNativeLibs = false(避免 native 库被错误压缩,影响 Play 商店上传校验) - 如果项目含多个 flavor(如
free/pro),bundleRelease默认只打release变体;要打特定 flavor,用bundleFreeRelease或bundleProRelease
Android Studio 图形界面操作容易漏掉的关键点
通过 Build → Generate Signed Bundle / APK → Android App Bundle 流程看似简单,但几个细节常被忽略:
- 必须选择
Release构建类型,选Debug不会生成 AAB(AS 会静默跳过,不报错也不提示) - 签名配置里如果用了
storeFile file("xxx.jks")但路径是相对路径,AS 向导可能找不到文件——建议统一用绝对路径或放在项目根下,并在build.gradle中提前配好 - 向导最后一步的 “Destination Folder” 不影响实际输出位置;真正输出始终在
app/build/outputs/bundle/...,UI 只是复制一份到你选的位置 - 如果模块是
com.android.library类型,AS 向导根本不会显示该模块——AAB 只能由com.android.application模块生成
AAB 不是“换个后缀的 APK”,它的构建阶段会做资源分片、动态功能模块剥离、原生库 ABI 拆分等操作,这些都在 bundleRelease 的 task 图中完成。一旦发现输出仍是 APK 或构建日志里没出现 BundleAssembler 相关 task,基本可以断定 Gradle 配置或插件版本有兼容性问题。











