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


当前回答

重点不是降低目标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 Studio 4.2.2中遇到了这个问题,你不需要将SDK构建工具从31降级到30或更改编译SDK版本。

主要问题是SDK构建工具31中缺少两个文件:

dx.bat dx.jar

解决方案是,这些文件在文件位置中命名为d8,因此将其名称更改为dx将解决这个错误。

步骤如下。

对于Windows

去地点 “C: \ \用户当地\ AppData \ \ Android用户\ Sdk \构建工具\ 31.0.0” 找到一个名为d8.bat的文件。这是一个Windows批处理文件。 重命名d8.bat为dx.bat。 在lib文件夹(“C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0\lib”) 将d8.jar重命名为dx.jar

记住AppData是一个隐藏文件夹。打开隐藏项以查看AppData文件夹。

适用于macOS或Linux

在终端运行如下命令:

# change below to your Android SDK path
cd ~/Library/Android/sdk/build-tools/31.0.0 \
  && mv d8 dx \
  && cd lib  \
  && mv d8.jar dx.jar

现在运行您的项目。

我从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。

然后就成功了。

进入Android Studio设置→Android SDK→SDK工具→。在列表中选中“谷歌Play licensing”和“Apply”。

它会下载一个文件,然后同步你的项目,这就完成了。

这个问题有多种解决方案,但有一个解决方案应该在逻辑上解决它,即卸载构建工具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版本开始,它对我有用。

对于那些正在使用Azure DevOps并需要30.0.3版本的人来说,你需要卸载31.0.0版本

我将此添加到我的管道中,以使我的构建再次工作。

  - bash: |
      $ANDROID_SDK_ROOT/tools/bin/sdkmanager --uninstall 'build-tools;31.0.0'

环境变量$ANDROID_SDK_ROOT在预设变量中