APK 默认输出路径是 app/build/outputs/apk/,按构建类型分层为 debug/ 和 release/ 子目录,文件名如 app-debug.apk 或 app-release.apk,严格位于模块级 build 目录下而非项目根目录。

APK 默认输出路径是 app/build/outputs/apk/
Android Studio 使用 Gradle 构建时,APK 文件不会出现在项目根目录或 build/ 顶层,而是严格按 Module 结构生成。以默认的 app 模块为例,最终 APK 落在:
app/build/outputs/apk/
这个路径下还会进一步按构建类型和变体分层:
-
debug/:存放app-debug.apk -
release/:存放app-release-unsigned.apk(未签名)或app-release.apk(已配置 signingConfigs 并完成签名) - 如果启用了
applicationVariants自定义命名,文件名可能带渠道、版本号等后缀,但父目录不变
注意:app/build/ 是 Module 级输出目录,不是项目根目录下的 build/ —— 后者通常为空或仅含 IDE 元数据。
为什么有时找不到 APK?常见路径误判点
- 把
build/直接放在项目根目录下找,忽略了它是每个 Module 自己的子目录 - 在错误的 Module 下查找,比如项目有
feature-login模块,却只查app/ - 构建没真正完成:点击 Run 可能只触发编译(
compile),不等于生成 APK;必须执行Build > Build Bundle(s) / APK(s) > Build APK(s)或运行assembleDebug任务 - 启用了
android.useAndroidX=true和android.enableJetifier=true但未同步成功,导致构建中断,APK 根本没生成
如何用命令行快速定位最新 APK
在项目根目录执行:
find . -name "*.apk" -path "./app/build/*" -type f | head -n 1
Linux/macOS 可用;Windows 用户可用 PowerShell:
Get-ChildItem -Path ./app/build -Recurse -Filter "*.apk" | Select-Object -First 1 -ExpandProperty FullName
这比手动翻文件夹快,也避免因 debug/release 子目录层级变动而找错。
自定义 APK 输出路径需改 android.applicationVariants
如果想把 APK 放到 dist/ 或桌面,不能只改文件夹位置,必须在 app/build.gradle 中干预输出逻辑:
-
applicationVariants.all { variant -> variant.outputs.all { output -> output.outputFile = new File("...") } }(旧版 Gradle,AGP - AGP 3.6+ 推荐用
variant.artifactFiles.get(0).outputDirectory = ...或更稳定的android.buildFeatures.prefab = true不相关,别误套用
关键点:路径必须是绝对路径或相对于项目根目录的合法路径;写相对路径如 ../dist/ 时,确保上级目录可写,否则静默失败——APK 还在默认路径,你以为改成功了。
真正容易被忽略的是:Gradle 构建是增量的,哪怕你改了输出路径,上一次没清理的旧 APK 仍留在原处,容易误以为新构建没生效。每次验证前,建议先 ./gradlew clean 再 assembleDebug。











