我用的是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!项目,真的不应该这么难。


当前回答

我尝试从SDK管理器卸载工具31。它成功地这样做了,但在构建项目时,它将重新安装并发生相同的问题。

然后我尝试重命名d8为dx建议。它开始运行一堆任务,导致整个计算机挂起。因为这个项目只是一个简单的活动。我不知道为什么Gradle需要不断地连接到互联网并占用这么多的CPU。

在硬重启和fsck之后,项目构建正常。

其他回答

我还没有足够的声誉评论,但有一个解决方案与符号链接的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

在许多博客中,你会发现解决方案是降级到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中构建您的项目,异常不应该再出现了!

重点不是降低目标API级别,而是完全针对API级别31来准备和测试Android 12的应用程序!

看起来DX已经从SDK中移除,取而代之的是D8。

它看起来像Android Gradle插件4。X不知道这一点。

目前我只看到两个解决方案:

继续使用agp4。x,应该把DX从30.0.3复制到31.0.0 将AGP升级到7.x

你不需要指定android。Build Tools 27.0.3或更高版本的buildToolsVersion。

Build Tools 27.0.3或更高版本。记住,你不再需要 属性指定生成工具的版本 android。buildToolsVersion属性—插件使用最小值 默认为所需版本。

源(Developers.Android)

我从https://android.googlesource.com/platform/dalvik/+/master/dx/etc/dx.bat下载了dx.bat文件。

我把它放在\build-tools\31.0.0中,然后下载了dx.jar文件(根据我得到的错误消息,该文件也丢失了) 从http://www.java2s.com/Code/Jar/d/Downloaddxjar.htm。

我把它放在目录\build-tools\31.0.0\lib。

然后就成功了。