通过Bash脚本生成APK时,构建成功却找不到输出文件的问题
问题
在Termux环境中运行Bash脚本创建APK,脚本完成系统更新、依赖安装、Android SDK配置、项目结构创建后,Gradle提示BUILD SUCCESSFUL,但后续找不到app/build/outputs目录及APK文件,报错如下:
BUILD SUCCESSFUL in 4s 1 actionable task: 1 executed Listing contents of build output directory: ls: cannot access 'app/build/outputs': No such file or directory APK was not found in the expected location. Listing contents of app/build/outputs/apk directory for debugging: ls: cannot access 'app/build/outputs/apk': No such file or directory
排查原因及解决办法
1. Gradle任务未执行完整构建
从日志看仅执行了1个任务,说明./gradlew build未触发完整的APK编译流程,大概率是首次初始化后只完成了基础校验,未执行打包任务。
- 解决:替换构建命令为明确的编译任务,比如:
或者强制清理后全量构建:./gradlew assembleDebug./gradlew clean build
2. Android SDK环境变量未配置
脚本安装了SDK但未设置环境变量,Gradle无法定位SDK路径,会跳过APK编译步骤。
- 解决:在执行Gradle构建前添加环境变量配置,放在
cd ~/MyFirstApp之后、gradle wrapper之前:export ANDROID_SDK_ROOT=${HOME}/Android/Sdk export PATH=$PATH:${ANDROID_SDK_ROOT}/platform-tools:${ANDROID_SDK_ROOT}/build-tools/24.0.3
3. Gradle与Android插件版本不兼容
Termux安装的Gradle是较新版本,但脚本中使用的Android插件com.android.tools.build:gradle:3.0.1版本过旧,版本不匹配会导致构建异常,表面成功但未生成APK。
- 解决:升级Android插件版本并匹配Gradle wrapper版本:
- 修改根目录
build.gradle中的插件依赖:classpath 'com.android.tools.build:gradle:7.0.4' - 生成对应版本的wrapper:
gradle wrapper --gradle-version 7.0.2
- 修改根目录
4. 缺少必要资源文件
脚本中styles.xml引用了colorPrimary等颜色资源,但未创建colors.xml,部分Android插件版本会因资源引用不完整跳过打包。
- 解决:创建
app/src/main/res/values/colors.xml文件:<resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> </resources>
5. 确认实际输出路径
部分Gradle版本会改变输出目录结构,先查看项目根目录的build目录内容:
ls -R ~/MyFirstApp/build
根据实际输出位置调整脚本中复制APK的路径。
内容的提问来源于stack exchange,提问作者Dmytro Parkhomenko
相关产品推荐
相关产品推荐

