AndroidStudio错误“安装的构建工具修订版31.0.0已损坏”
我在 Android Studio 4.2.2 上。我创建了一个新项目并且没有在启动代码中添加任何内容,每当我单击build 或 run 时,我都会收到此错误:
安装的构建工具修订版 31.0.0 已损坏。使用 SDK Manager 删除并重新安装。
我看过其他帖子的建议,但这些解决方案都没有奏效。这是我尝试过的:
- SDK 经理 ? SDK 工具? 选中“显示包详细信息”,取消选中 31.0.0,然后单击“应用”?卸载 31.0.0 吗?检查 31.0.0 并重新安装
- 在SDK管理器中,取消31.0.0并尝试在安装旧版本(例如,我已经试过30.0.3)和更新“buildToolsVersion”的build.gradle到安装的版本
- 去项目结构?属性并验证为“构建工具版本”和“编译的 SDK 版本”选择了 31.0.0
- 手动删除 build-tools 文件夹中的东西;即,
rm -rf /path/to/android/sdk/build-tools/31.0.0(它不像其他一些帖子描述的那样以“-rc”结尾) - 重启安卓工作室
- 重新安装 Android Studio
我是一个 Android 菜鸟,只是想建立一个 hello world 项目,这真的不应该这么难。
回答
首先,我在Android Studio 4.2.2 中遇到了这个问题,您不需要将SDK 构建工具31 降级到30 或不更改编译SDK 版本。
主要问题是 SDK 构建工具 31 中缺少的两个文件是
- dx.bat
- dx.jar
解决方法是将这些文件在文件位置命名为 d8,因此将它们的名称更改为 dx 将解决错误。
步骤如下。
-
前往地点
"C:UsersuserAppDataLocalAndroidSdkbuild-tools31.0.0" -
找到一个名为 d8.bat 的文件。这是一个 Windows 批处理文件。
-
将 d8.bat 重命名为 dx.bat。
将 d8.jar 更改为 dx.jar 之后
// 现在将 d8.jar 重命名为 dx.jar它将位于:
"C:UsersuserAppDataLocalAndroidSdkbuild-tools31.0.0lib"记住 AppData 是一个隐藏文件夹。打开隐藏项目以查看 AppData 文件夹。
现在运行你的项目...
- 这应该是公认的答案。在 Mac 上:`cd ~/Library/Android/sdk/build-tools/31.0.0 && mv d8 dx && cd lib && mv d8.jar dx.jar`。
- 挖得太深,找不到不需要我降级 API 级别的答案。我没有复制这些文件,而是创建了符号链接。这可以从命令行轻松完成:`mklink %ANDROID_HOME%build-tools31.0.0dx.bat %ANDROID_HOME%build-tools31.0.0d8.bat && mklink %ANDROID_HOME%build-工具31.0.0libdx.jar %ANDROID_HOME%build-tools31.0.0libd8.jar`。尽管如此,这仍然是一种解决方法,但最干净的方法。
- 难以置信……我无法想象为什么我们需要进行这样的重命名……真可惜……
- 谢谢。为我工作。
- 是的,这应该是公认的答案
回答
遇到了同样的问题,并通过几行更改解决了。
检查项目代码面板,然后转到Gradle 脚本?build.gradle文件,
- 将三个地方从 31 改为 30:compileSdkVersion、buildToolsVersion和targetSdkVersion
- 您会注意到修改后的线路上发生了灯泡撞击。单击并选择同步 [到版本 30]。Android Studio 将自动下载 BuildTool V30 并更改项目设置。
现在运行应用程序。这个对我有用。
- 作为一种解决方法,您的回答很好。但是如果您必须使用 SDK31 和构建工具 31.0.0,它并不能解决实际问题。在构建工具 31.0.0 中,缺少以下文件“dx.bat”和“libs/dx.jar”。最新的工作构建工具版本是 31.0.0-rc4。要解决构建工具 31.0.0 中的问题,只需从 31.0.0-rc4 中复制提到的文件即可。然而,即使这也不过是一种解决方法。但至少这让您可以使用构建工具 31.0.0。
回答
重点不是降级目标 API 级别,而是准确构建 API 级别 31,以准备和测试适用于 Android 12 的应用程序!
看起来 DX 已从 SDK 中删除以支持 D8。
看起来 Android Gradle插件 4.x 不知道这一点。
目前我只看到两种解决方案:
- 为了与 AGP 4.x 保持一致,应该将 DX 从 30.0.3 复制到 31.0.0
- 将 AGP 升级到 7.x
回答
更改这些设置后,它似乎工作正常。我从SDK Manager下载了 SDK version 30 。
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.anurag.myapplication"
minSdkVersion 23
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
回答
对于使用 Azure DevOps 并需要使用 30.0.3 的用户,您需要卸载 31.0.0 版
我将此添加到我的管道中,以使我的构建再次工作。
- bash: |
$ANDROID_SDK_ROOT/tools/bin/sdkmanager --uninstall 'build-tools;31.0.0'
环境变量 $ANDROID_SDK_ROOT 在预设变量中
回答
要解决此问题,请首先转到以下位置:
C:UsersUserAppDataLocalAndroidSdkbuild-tools31.0.0
然后找到文件 d8(Windows 批处理文件)并将其重命名为 dx。
然后去:
C:UsersUserAppDataLocalAndroidSdkbuild-tools31.0.0lib
然后找到文件d8(Executable Jar File),重命名为dx。
您的问题现在将得到解决。
回答
如果您仔细查看日志,您会看到:
Build-tool 31.0.0 在 path-to-sdkbuild-tools31.0.0dx.bat 中缺少 DX
您可以尝试从以前的版本复制它,但是如果您必须告诉整个团队这样做并且它仍然在您的服务器管道上失败,那将不会很好。这在 31.0.0-rc5 版本中也发生在我身上。
回答
版本 31.0.0 本身已损坏,我们需要降级到 30。
我遵循的相同步骤:
-
开放项目结构 ? 按Ctrl+ Alt+ Shift+S
-
转到模块?属性?*编译的SDK版本:30 构建工具版本:30.0.2
-
转到默认配置?目标 SDK 版本:30
-
Apply和Close。
-
菜单工具?SDK管理器
-
在我的情况下,取消选中 API 31 以卸载并选中 Android 11.0(R) 以安装 (30.0.3)。
-
Apply.
回答
mac 的解决方案与 windows 非常相似,但通过阅读 windows 解决方案并不能完全确定。路径和文件名不同,但问题基本相同。
- 打开终端应用程序并键入以下命令
- Enter在您键入的每个命令行之后点击以执行命令
- 类型
cd /Users/admin/Library/Android/sdk/build-tools/ - 注意:您的用户目录名称可能与“admin”不同
- 导航到对应版本:输入
cd 31.0.0 - 类型
cp d8 dx - 类型
cd lib - 类型
cp d8.jar dx.jar
这解决了我在 macOS 10.13.6 (High Sierra) 上的问题