Ionic Capacitor Android构建失败求助:Gradle任务执行出错
/node_modules/@capacitor/android/capacitor/build 问题描述
我有一个 React Ionic 应用,iOS 端打包转换完全正常,但执行 npx cap run android 构建 Android 应用时失败,核心报错信息如下:
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':capacitor-android:writeDebugAarMetadata'. > Failed to create parent directory '/Users/yarin/Desktop/dashboard/project/node_modules/@capacitor/android/capacitor/build' when creating directory '/Users/yarin/Desktop/dashboard/project/node_modules/@capacitor/android/capacitor/build/intermediates/aar_metadata/debug'
完整构建日志:
yarin@h-MacBook-Pro-sl-Yarin-2 project % npx cap run android
✔ Copying web assets from build to android/app/src/main/assets/public in 21.14ms
✔ Creating capacitor.config.json in android/app/src/main/assets in 574.33μs
[info] Inlining sourcemaps
✔ copy android in 68.90ms
✔ Updating Android plugins in 4.05ms
[info] Found 5 Capacitor plugins for android:
@capacitor/app@4.1.1
@capacitor/device@4.1.0
@capacitor/haptics@4.1.0
@capacitor/keyboard@4.1.1
@capacitor/status-bar@4.1.1
✔ update android in 32.75ms
✔ Please choose a target device: › Google sdk_gphone64_arm64 (emulator-5554)
✖ Running Gradle build - failed!
[error]
> Configure project :app
WARNING:Using flatDir should be avoided because it doesn't support any meta-data formats.> Configure project :capacitor-cordova-android-plugins WARNING:Using flatDir should be avoided because it doesn't support any meta-data formats. > Task :app:preBuild UP-TO-DATE > Task :app:preDebugBuild UP-TO-DATE > Task :app:mergeDebugNativeDebugMetadata NO-SOURCE > Task :capacitor-android:preBuild UP-TO-DATE > Task :capacitor-android:preDebugBuild UP-TO-DATE > Task :capacitor-android:compileDebugAidl NO-SOURCE > Task :capacitor-app:preBuild UP-TO-DATE > Task :capacitor-app:preDebugBuild UP-TO-DATE > Task :capacitor-app:compileDebugAidl NO-SOURCE > Task :capacitor-cordova-android-plugins:preBuild UP-TO-DATE > Task :capacitor-cordova-android-plugins:preDebugBuild UP-TO-DATE > Task :capacitor-cordova-android-plugins:compileDebugAidl NO-SOURCE > Task :capacitor-device:preBuild UP-TO-DATE > Task :capacitor-device:preDebugBuild UP-TO-DATE > Task :capacitor-device:compileDebugAidl NO-SOURCE > Task :capacitor-haptics:preBuild UP-TO-DATE > Task :capacitor-haptics:preDebugBuild UP-TO-DATE > Task :capacitor-haptics:compileDebugAidl NO-SOURCE > Task :capacitor-keyboard:preBuild UP-TO-DATE > Task :capacitor-keyboard:preDebugBuild UP-TO-DATE > Task :capacitor-keyboard:compileDebugAidl NO-SOURCE > Task :capacitor-status-bar:preBuild UP-TO-DATE > Task :capacitor-status-bar:preDebugBuild UP-TO-DATE > Task :capacitor-status-bar:compileDebugAidl NO-SOURCE > Task :app:compileDebugAidl NO-SOURCE > Task :capacitor-android:packageDebugRenderscript NO-SOURCE > Task :capacitor-app:packageDebugRenderscript NO-SOURCE > Task :capacitor-cordova-android-plugins:packageDebugRenderscript NO-SOURCE > Task :capacitor-device:packageDebugRenderscript NO-SOURCE > Task :capacitor-haptics:packageDebugRenderscript NO-SOURCE > Task :capacitor-keyboard:packageDebugRenderscript NO-SOURCE > Task :capacitor-status-bar:packageDebugRenderscript NO-SOURCE > Task :app:compileDebugRenderscript NO-SOURCE > Task :app:generateDebugBuildConfig > Task :app:javaPreCompileDebug > Task :capacitor-android:writeDebugAarMetadata FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':capacitor-android:writeDebugAarMetadata'. > Failed to create parent directory '/Users/yarin/Desktop/dashboard/project/node_modules/@capacitor/android/capacitor/build' when creating directory '/Users/yarin/Desktop/dashboard/project/node_modules/@capacitor/android/capacitor/build/intermediates/aar_metadata/debug'
解决步骤
1. 修复目录权限
报错本质是Gradle无权限写入node_modules目录,Mac系统执行以下命令赋予当前用户完整权限:
sudo chown -R $(whoami) /Users/yarin/Desktop/dashboard/project/node_modules
Linux系统替换为:
sudo chown -R $USER /Users/yarin/Desktop/dashboard/project/node_modules
Windows用户右键以管理员身份打开终端后再执行构建命令。
2. 清理依赖缓存并重装
- 删除旧依赖和锁文件:
rm -rf node_modules package-lock.json yarn.lock
- 重新安装依赖:
npm install # 若使用yarn则执行:yarn install
3. 重置Capacitor Android平台
- 移除现有Android平台:
npx cap remove android
- 重新添加并同步:
npx cap add android npx cap sync android
4. 手动创建缺失目录
若权限修复后仍报错,手动创建目标目录:
mkdir -p /Users/yarin/Desktop/dashboard/project/node_modules/@capacitor/android/capacitor/build/intermediates/aar_metadata/debug
之后重新执行构建:
npx cap run android
5. 处理flatDir警告(可选)
如果flatDir警告导致构建异常,打开android/build.gradle文件,移除flatDir配置块,改用标准Maven仓库管理依赖。
内容的提问来源于stack exchange,提问作者Yarin Inbar

