AppCenter中Android Java项目CI/CD构建失败(错误码1)
AppCenter Android构建失败(错误码1):Build-tools 31.0.0损坏问题解决
问题描述
我在AppCenter为Android Java项目执行CI/CD流程时构建失败,错误码为1,堆栈跟踪如下:
Build-tool 31.0.0 is missing DX at /Users/runner/Library/Android/sdk/build-tools/31.0.0/dx FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':app:mergeStagingAssets'. Could not resolve all dependencies for configuration ':app:stagingRuntimeClasspath'. > Could not create task ':app:minifyReleaseWithR8'. > Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 32s Error: /Users/runner/work/1/s/gradlew failed with return code: 1 at ChildProcess.<anonymous> (/Users/runner/work/_tasks/Gradle_8d8eebd8-2b94-4c97-85af-839254cc6da4/1.128.0/node_modules/vsts-task-lib/toolrunner.js:569:30) at emitTwo (events.js:106:13) at ChildProcess.emit (events.js:191:7) at maybeClose (internal/child_process.js:920:16) at Socket.<anonymous> (internal/child_process.js:351:11) at emitOne (events.js:96:13) at Socket.emit (events.js:188:7) at Pipe._handle.close [as _onclose] (net.js:509:12) ##[error]Error: /Users/runner/work/1/s/gradlew failed with return code: 1 ...
解决方案
方法1:手动创建DX软链接
Build-tools 31.0.0中官方用d8替代了dx,但旧版Gradle仍会查找dx文件。在AppCenter的构建前置脚本中添加以下命令:
ln -s $ANDROID_SDK_ROOT/build-tools/31.0.0/d8 $ANDROID_SDK_ROOT/build-tools/31.0.0/dx ln -s $ANDROID_SDK_ROOT/build-tools/31.0.0/lib/d8.jar $ANDROID_SDK_ROOT/build-tools/31.0.0/lib/dx.jar
方法2:降级Build-tools版本
修改项目根目录的build.gradle文件,将Build-tools切换到30.0.3等稳定旧版本:
android { buildToolsVersion "30.0.3" } buildscript { dependencies { // 适配Build-tools 30.0.3的AGP版本 classpath 'com.android.tools.build:gradle:7.0.4' } }
方法3:升级Gradle与AGP版本
若要保留Build-tools 31.0.0,需升级Gradle到7.0+、AGP到7.0+以适配d8工具:
- 修改
gradle/wrapper/gradle-wrapper.properties:distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip - 修改项目根目录
build.gradle:buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.0.2' } }
内容的提问来源于stack exchange,提问作者Ali Kashan
相关产品推荐
相关产品推荐

