Android Studio错误“Installed Build Tools revision 31.0.0 is corrupt "

我用的是Android Studio 4.2.2。我创建了一个新项目,并没有向启动器代码中添加任何东西,每当我单击构建或运行时,我都会得到以下错误:

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

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

  1. SDK管理器→SDK工具→选中“显示包详细信息”,取消选中31.0.0,单击“应用”;→卸载31.0.0→检查31.0.0并重新安装
  2. 在SDK管理器中,取消选择31.0.0,并尝试安装旧版本(例如,我已经尝试了30.0.3),并更新“buildtoolsversion”;在build.gradle中到已安装的版本
  3. 项目结构属性并验证31.0.0被选择为“构建工具版本”;“编译SDK版本”;
  4. 手动删除构建工具文件夹中的东西;例如,rm -rf /path/to/android/sdk/build-tools/31.0.0(它不以"-rc"结尾;就像其他一些帖子所描述的那样)
  5. 重启Android Studio
  6. 重新安装Android Studio

我是一个Android新手,只是试图建立一个你好,世界!项目,它真的不应该这么难。

429237 次浏览

更改这些设置后,它似乎可以正常工作。我从SDK经理下载了SDK版本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"
}

如果你仔细看日志,你会发现:

Build-tool 31.0.0在path-to-sdk\build-tools\31.0.0\ DX .bat中丢失DX

您可以尝试从以前的版本中复制它,但如果您必须告诉整个团队做同样的事情,并且在服务器管道上仍然失败,那么这就不太合适了。我在31.0.0-rc5发布时也遇到了这种情况。

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

检查项目代码面板,并转到Gradle脚本build.gradle文件,

  1. 将31到30的3个位置改变:compileSdkVersionbuildToolsVersiontargetSdkVersion
  2. 您将注意到在修改后的线路上发生了灯泡撞击。单击,选择“sync [to version 30]”。Android Studio将自动下载BuildTool V30并更改项目设置。

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

我在SDK管理器下选中31,单击Android 11.0(R)恢复到30,并更新Build Gradle(项目)将compileSdkVersion和targetSdkVersion从31更改为30。

我还必须将buildToolsVersion更新为“30.0.2”;而不是30。现在它起作用了。

Ctrl + Alt + Shift + S打开项目结构。从左边选择模块

打开属性选项卡,修改如下内容 编译Sdk版本:30
构建工具版本:30.0.2

之后打开默认配置选项卡并更改:
目标SDK版本:30

首先,伙计们,如果你正面临这类问题,你可以尝试一下我们需要将31移到30的解决方案。 在这之后,需要做一些重要的步骤: 一步:< / p >
  1. 开放项目结构及gt;按Ctrl + Alt + Shift + S
  2. 打开模块>性能比;编译的Sdk版本:30 构建工具版本:30.0.2
  3. 点击Default Config >目标SDK版本:30

之后,你的任务就没有了,在某些情况下仍然,你可以看到这个配置不被接受,你还需要做这些步骤:

  1. 转到右上方区域,单击SDK管理器图标。

  2. 选择Android SDK >图片1,你需要勾选你需要的所有Android版本*

  3. 勾选后单击“确定”,然后安装。

  4. Android SDK >SDK工具>右边>展示包装细节> 勾选30.0.2选项,然后安装。 图像2 >选择30.0.2 < / p >

5)现在完成点击确定安装>应用你的好去。

31.0.0版本本身已经损坏,我们需要降级到30。

我遵循同样的步骤:

  1. 打开项目结构→按Ctrl + Alt + 转变 + 年代

  2. 模块属性→*编译SDK版本:30构建工具版本:30.0.2

  3. 进入默认配置目标SDK版本:30

  4. 应用关闭

  5. 菜单工具SDK经理

  6. 取消API 31来卸载,在我的情况下,检查Android 11.0(R)来安装(30.0.3)。

  7. < p > 应用

首先,我在Android Studio 4.2.2中遇到了这个问题,你不需要将SDK构建工具从31降级到30或更改编译SDK版本。

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

  1. dx.bat
  2. dx.jar

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

步骤如下。

对于Windows

  1. 到位置

     "C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0"
    
  2. 找到一个名为d8.bat的文件。这是一个Windows批处理文件。

  3. 将d8.bat重命名为dx.bat。

  4. (C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0\lib")

  5. 将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

现在运行您的项目。

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

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

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

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

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

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

尝试重新安装SDK 31并重新启动Android Studio,它应该可以工作。否则,从SDK管理器中,将SDK 30安装到系统中,并将应用构建Gradle文件配置为

compileSdkVersion 30
buildToolsVersion "30.0.0"
defaultConfig {
targetSdkVersion 30
}

仅从Android Studio卸载Build-Tools 31.0.0

. pv07
Navigate to:
Configure -> SDK Manager -> SDK Tools [tab] -> Show Package Details [check box]
click on Android SDK Build-Tools 31
uncheck 31.0.0
and Hit OK

enter image description here

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

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。

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

build.gradle文件中(模块:HelloWorld.app):

  • compileSdkVersion 30
  • buildToolsVersion“30.0.0"
  • targetSdkVersion 30

将上述配置更改为:

Enter image description here

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

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

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

环境变量$ANDROID_SDK_ROOT在预设变量 . xml文件中

我卸载并安装31.0.0包,它仍然显示错误。

我使用了RC2构建工具,它在没有降级到SDK版本30的情况下编译和运行良好。

在文件app / build.gradle中:

buildToolsVersion "31.0.0-rc2"

这是一个与Android studio和SDK 31冲突的问题。

像这样转换你的build.gradle文件:

android {
compileSdkVersion 30
buildToolsVersion "30.0.3"


defaultConfig {
applicationId "com.example.app"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"


testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}

这里有太多错误和误导性的答案。

如果你使用Beta SDK,你真正应该做的唯一一件事就是安装最新的Android Studio Beta版本。最新的Android Studio Beta支持最新的AGP,正确地支持SDK 31。

Mac的解决方案与Windows非常相似,但从Windows的解决方案中还不能完全得出结论。路径和文件名不同,但问题基本上是相同的。

  • 打开终端应用程序并键入下面的命令
  • 在输入执行命令的每个命令行之后,单击输入
  • 类型cd /Users/admin/Library/Android/sdk/build-tools/
  • 注意:您的用户目录名可能与“;admin"
  • 导航到相应的版本:类型cd 31.0.0
  • 类型cp d8 dx
  • 类型cd lib
  • 类型cp d8.jar dx.jar

这修复了我在macOS v10.13.6 (High Sierra)上的问题。

检查你的Gradle构建:

android {
compileSdkVersion 30
buildToolsVersion "31.0.0" // Solution 1: // Downgrade it to 30.0.3


defaultConfig {
applicationId "com.mobiz.lottotemplate440"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"


testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

或者,

解决方案2

从SDK管理器下载SDK 31。

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

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

然后就成功了。

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

目前似乎工作是: 解决方案1(降级构建工具版本在项目中使用)

检查项目代码面板,并进入Gradle Scripts ->构建。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

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

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

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

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

我首先遵循user16475264的回答,但真正的问题(至少在我的情况下)原来是AGP (Android Gradle Plugin)的版本。所以,在升级到v7之后,我回滚了我对可执行文件和JAR文件的更改:~/Library/Android/sdk/build-tools/31.0.0中的d8。这个工作

Android Gradle Build plugin

My Android Studio Arctic Fox 2020.3.1 Patch 2

下载Android 12 and Android SDK Build-Tools 31 in Android SDK < / p >

使用buildToolsVersion "31.0.0"

构建。gradle(项目)

buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"
}
}


task clean(type: Delete) {
delete rootProject.buildDir
}

构建。gradle(模块)

plugins {
id 'com.android.application'
id 'kotlin-android'
}


android {
compileSdk 31
buildToolsVersion "31.0.0"


defaultConfig {
applicationId "com.example.android12"
minSdk 21
targetSdk 31
versionCode 1
versionName "1.0"


testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}


buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}


dependencies {


implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

gradle-wrapper.properties

#Fri Sep 10 13:52:36 ICT 2021
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

在build.gradle(Module)文件中。修改以下设置。

android {
compileSdkVersion 30
buildToolsVersion "30.0.0"


defaultConfig {
applicationId "com.recycleview.mvvm"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"


testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

enter image description here

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

进入Android Studio设置→Android SDKSDK工具→。在列表中,标记谷歌播放许可和应用

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

更改您的Gradle构建从:

android {
compileSdkVersion 31
buildToolsVersion '31.0.0'


defaultConfig {
applicationId "com.example.eg"
minSdkVersion 23
targetSdkVersion 31
versionCode 1
versionName "1.0"


testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

:

android {
compileSdk 31


defaultConfig {
applicationId "com.example.eg"
minSdk 23
targetSdk 31
versionCode 1
versionName "1.0"


testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

这是可行的。

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

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

.默认为需要的版本

源(开发人员。安卓)

我回答了这个问题在这里,但我将复制/粘贴答案,因为它是相关的:


正如在其他问题中指出的那样,问题是dx(或dx.bat)不再可用。这是一个有目的的改变。

建议将d8重命名为dx或从构建工具30.0.0 复制它解决了这个问题,但dx不太可能返回。因此,今后你将不得不在每个开发人员的机器上为每个构建工具安装补丁。

更向前兼容的解决方案是升级你的Android Gradle插件。这并不像在Gradle中更改数字那么简单,但我发现Android Studio的升级过程对我的项目很有效。如果你打开你的项目级build.gradle文件,打开快速修复菜单从灯泡在你的

dependencies{
classpath 'com.android.tools.build:gradle:...'

部分。从这里开始,选择升级到最新的版本(而不是仅仅4个。对我来说是X)。

快速修复菜单打开。“调用升级助手升级到7.1.3”选项;选择 < / >

然后我对所有的东西都运行升级步骤:

Upgrade assistant window open with all items checked. < / >

我的问题是__abc1特有的:我需要使用系统Android SDK,而不是内置的,但Unity本身喜欢重新生成这些构建文件,只会抓取它能找到的最新构建工具。为了减少手动步骤并避免不得不导出我的项目,我选择从我的“播放器设置>发布设置"生成我的模块级build.gradle文件;亮点:

Publishing Setting section open with < / >

这两个文件都有一行,看起来像这样:

buildToolsVersion '**BUILDTOOLS**'

你可以用:

buildToolsVersion '30.0.0'

从Unity中,这让我可以像以前一样构建和部署项目,而无需修改buildtools安装。

如果你使用的是Mac电脑,并删除了构建工具31/32并重新安装,但仍然不能工作:

试着重新启动你的Mac。我刚刚这么做了,它解决了我所有的问题。

对于CircleCI,在构建之前添加此步骤,因为在cimg/android:2022.08-ndk上默认情况下构建工具31不可用。

- run:
name: Preinstall SDK 31, fix SDK 31 and 33 missing DX files
command: |
echo yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "build-tools;31.0.0"
cd $ANDROID_HOME/build-tools/33.0.0 && mv d8 dx && cd lib && mv d8.jar dx.jar
cd $ANDROID_HOME/build-tools/31.0.0 && mv d8 dx && cd lib && mv d8.jar dx.jar

记住指向cmdline-tools,这样sdkmanager就可以用Java 11正确运行。

对于android 12目标sdk < >强API 31日< / >强

compileSdkVersion 31
buildToolsVersion 31.1.0

Android gradle插件(AGP)应该有最低版本设置为

7.0.2 or above

Android gradle包装版本可以设置

gradle-7.2-bin.zip

通过上述配置,构建错误将得到解决,您无需将构建工具版本降级到30.0.2

此外,如果你面临和intellij注释相关的构建错误,在你的app / build.gradle文件中添加以下配置

configurations {
compile.exclude group: 'com.intellij', module: 'annotations'
implementation.exclude group: 'com.intellij', module:'annotations'
}