我用的是Android Studio 4.2.2。我创建了一个新项目,还没有添加任何东西到启动器代码,每当我点击构建或运行,我得到这个错误:

已安装的构建工具版本31.0.0已损坏。使用SDK管理器删除并重新安装。

我看了其他帖子的建议,但这些解决方案都不起作用。以下是我的尝试:

SDK Manager → SDK Tools → check "Show package details", uncheck 31.0.0, and click "Apply" → Uninstall 31.0.0 → check 31.0.0 and reinstall it In SDK Manager, deselect 31.0.0 and try installing an older version (e.g., I've tried 30.0.3) and update "buildToolsVersion" in build.gradle to the installed version Went to Project Structure → Properties and verified that 31.0.0 is selected for "Build Tools Version" and "Compiled SDK Version" Manually remove the stuff in the build-tools folder; i.e., rm -rf /path/to/android/sdk/build-tools/31.0.0 (it doesn't end in "-rc" like some other posts have described) Restart Android Studio Reinstall Android Studio

我是一个Android新手,只是想设置一个Hello, World!项目,真的不应该这么难。


当前回答

为了解决这个问题,首先去以下位置:

C:\Users\User\AppData\Local\Android\Sdk\构建工具\ 31.0.0

然后找到文件d8 (Windows批处理文件)并将其重命名为dx。

然后转到:

C:\Users\User\AppData\Local\Android\Sdk\构建工具\ 31.0.0 \ lib

然后找到文件d8(可执行Jar文件)并重命名为dx。

你的问题现在可以解决了。

其他回答

遇到了同样的问题,并通过一些行更改解决了问题。

检查项目代码面板,并进入Gradle Scripts→build。gradle文件,

将三个位置从31更改为30:compileSdkVersion、buildToolsVersion和targetSdkVersion 您将注意到在修改后的线路上发生了灯泡撞击。单击,选择“sync [to version 30]”。Android Studio将自动下载BuildTool V30并更改项目设置。

现在运行应用程序,对我有用。

我还没有足够的声誉评论,但有一个解决方案与符号链接的Windows,我想补充说,它也适用于macOS。

这是Mac终端的命令:

ln %ANDROID_HOME%/sdk/build-tools/31.0.0/d8 %ANDROID_HOME%/sdk/build-tools/31.0.0/dx && ln %ANDROID_HOME%/sdk/build-tools/31.0.0/lib/d8.jar %ANDROID_HOME%/sdk/build-tools/31.0.0/lib/dx.jar

这个问题有多种解决方案,但有一个解决方案应该在逻辑上解决它,即卸载构建工具31.0.0版本并重新安装。这个解决方案并不管用,Android Studio团队可能需要研究一下。

目前看来有效的方法是: 解决方案1(降低项目中使用的构建工具版本)

检查项目代码面板,然后转到Gradle Scripts - > build。gradle文件,

改变3个位置:compileSdkVersion, buildToolsVersion, targetSdkVersion从31到30 您将注意到在修改的行上出现了一个灯泡,单击并选择同步[到版本30]。Android Studio将自动下载BuildTool V30并更改项目设置。

解决方案2(从以前版本的构建工具中获取丢失的dx.bat和dx.jar文件) Build-tool 31.0.0在path-to-sdk\build-tools\31.0.0\ DX .bat和 Build-tool 31.0.0在path-to-sdk\build-tools\31.0.0\lib\ DX .jar中丢失DX

您可以尝试从以前版本的构建工具中复制它。我从30.0.3版本开始,它对我有用。

在许多博客中,你会发现解决方案是降级到API 30,然而,如果你想尝试API 31,降级并不是一个真正的解决方案。幸运的是,有一种方法可以让构建工具为API 31工作。API 31构建工具崩溃的原因是2个丢失的文件:

dx.bat dx.jar

然而,这些文件以另一个名称存在,具体来说:

d8.bat d8.jar

因此,防止出现这种异常的变通办法是,复制上面提到的以新名称存在的文件,或者创建一个符号链接(Windows中的快捷方式),它就会神奇地工作。这将适用于所有的操作系统,但它的方式将取决于每个平台。

窗户 你可以手动或使用命令提示符,为dx.bat创建符号链接(记得用你的SDK目录替换):

mklink C:\Users\username\AppData\Local\Android\Sdk\build-tools\31.0.0\dx.bat C:\Users\username\AppData\Local\Android\Sdk\build-tools\31.0.0\d8.bat

和为dx.jar创建符号链接的命令:

mklink C:\Users\username\AppData\Local\Android\Sdk\build-tools\31.0.0\lib\dx.jar C:\Users\username\AppData\Local\Android\Sdk\build-tools\31.0.0\lib\d8.jar

在复制并重命名上述文件或运行前面的命令来创建符号链接(快捷方式)后,你将在build-tools和build-tools/lib目录下有两个新文件:

MacOS和Linux 如果你使用的是MacOS或Linux,在终端上运行以下命令就可以了(它会切换到构建工具目录,然后将d8移动到dx,将d8.jar移动到dx.jar):

cd ~/Library/Android/sdk/build-tools/31.0.0 && mv d8 dx && cd lib && mv d8.jar dx.jar

再次尝试在Android Studio中构建您的项目,异常不应该再出现了!

将gradle升级到7.0.2可能会有所帮助