Android Studio错误 Installed Build Tools revision 31.0.0 is corrupted

回答 34 浏览 39.4万 2021-07-15

我在Android Studio 4.2.2上。我创建了一个新的项目,没有在启动代码中添加任何东西,每当我点击build或run,我就会得到这个错误:

安装的Build Tools修订版31.0.0已损坏。请删除并使用SDK管理器重新安装。

我看了其他帖子的建议,但这些解决方案都不奏效。以下是我所尝试的。

  1. SDK管理器→SDK工具→勾选"显示软件包细节",取消勾选31.0.0,然后点击"应用"→卸载31.0.0→勾选31.0.0并重新安装它
  2. 在 SDK Manager 中,取消选择 31.0.0 并尝试安装旧版本(例如,我尝试过 30.0.3)并将 build.gradle 中的“buildToolsVersion”更新为已安装的版本
  3. 前往Project StructureProperties,确认“Build Tools Version”和“Compiled SDK Version”选择了31.0.0
  4. 手动删除 build-tools 文件夹中的东西;即rm -rf /path/to/android/sdk/build-tools/31.0.0(它不像其他一些帖子所描述的那样以“-rc”结尾)
  5. 重新启动安卓工作室
  6. 重新安装安卓工作室

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

mr_broccoli 提问于2021-07-15
想通了,取消勾选 "显示软件包细节",然后你可以选择一个较低的版本。如果你不是为android 12构建的(你可能还不是),你可以取消勾选 "31.0.0 "并勾选 "30.0.3"。之后,进入你的应用程序中的build.gradle,将buildToolsVersion "31.0.0"改为buildToolsVersion "30.0.3"Kevin McCarpenter 2021-07-15
因此,真正的问题是31.0.0实际上是被破坏的Abraham Mathew 2021-07-16
这很奇怪,因为我重新安装了android studio,并得到了同样的问题。gzinho 2021-07-16
这可能是31.0.0的问题,请等待谷歌的另一次更新吧!Paramjit Singh Rana 2021-07-19
使用最新的Android Studio Beta,它将解决这个问题。另外,如果你还在这里,请不要把解决方法标为正确答案,而要标为实际解决方案。joe1806772 2021-07-28
34 个回答
#1楼 已采纳
得票数 1100

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

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

  1. dx.bat
  2. dx.jar

解决方案是,这些文件在文件位置中被命名为d8,所以将它们的名字改为dx就可以解决错误。

具体步骤如下。

For Windows

  1. 前往该地点

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

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

  4. 在lib文件夹中("C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0\lib")的。

  5. 将d8.jar重命名为dx.jar

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

For macOS or 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

现在,运行你的项目。

Vikrant Pandey 提问于2021-07-18
Aaron 修改于2021-11-21
挖得太深了,找不到一个不需要我降低API级别的答案。我没有复制这些文件,而是创建了符号链接。这可以在命令行中轻松完成。mklink %ANDROID_HOME%\build-tools\31.0.0\dx.bat %ANDROID_HOME%\build-tools\31.0.0\d8.bat && mklink %ANDROID_HOME%\build-tools\31.0.0\lib\dx.jar %ANDROID_HOME%\build-tools\31.0.0\lib\d8.jar.虽然这仍然是一个变通办法,但却是最干净的办法。itachi 2021-07-19
这应该是公认的答案。在Mac上。cd ~/Library/Android/sdk/build-tools/31.0.0 && mv d8 dx && cd lib && mv d8.jar dx.jar.Christopher Pickslay 2021-07-28
难以置信.....,我只是无法想象为什么我们需要做这样的改名......真是太可惜了。Oleg 2021-07-28
cd $ANDROID_HOME/build-tools/31.0.0; ln -s d8 dx; ln -s lib/d8.jar lib/dx.jar; Joost 2021-09-09
如此知名的公司怎么会发布有如此愚蠢的错误的产品?没有经过测试就发布给用户?许多人可能已经浪费了他们的宝贵时间。mvsagar 2021-10-07
#2楼
得票数 124

遇到了同样的问题,通过修改几行字就解决了。

检查项目代码面板,然后转到Gradle Scriptsbuild.gradle 文件,

  1. 将三个地方从 31 改为 30:compileSdkVersionbuildToolsVersiontargetSdkVersion
  2. 你会注意到在修改过的行上出现了一个电灯泡。点击并选择同步[到版本30]。Android Studio将自动下载BuildTool V30并改变项目设置。

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

Jack Wang 提问于2021-07-15
Peter Mortensen 修改于2021-07-27
如果我们正在降级构建工具,它将会被接受,但在31.0.0中无法工作。Abraham Mathew 2021-07-17
你的答案作为一种变通方法是不错的。但如果你必须使用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中工作。gal 2021-07-18
@gal 在本地的一切工作都很好,但我的CI似乎抱怨它Failed to find Build Tools revision 31.0.0-rc4CyberShark 2021-08-01
@CyberShark 这很有道理。如果你和其他开发者一起工作,他们都必须构建同一个项目,那么他们都需要一个工作环境。因此,如果你通过从另一个构建工具文件夹中复制 "dx.bat "和 "libs/dx.jar "文件到构建工具31.0.0中来进行破解,那么在团队中工作的所有其他人也必须这么做。最后,应该由 Google 在下一个版本的 build tools 中修复它。gal 2021-08-02
这并没有回答问题,它只是提供了一个可能无法接受的权衡。请看投票率最高的答案,以了解工作解决方案。Teodor Sandu 2021-09-07
#3楼
得票数 55

重点不是降低目标API级别,而是完全按照API级别31建立,以便为Android 12准备和测试一个应用程序!

我们的目标是,让所有的人都有机会使用我们的应用程序,让所有的人都能使用我们的应用程序。

看起来DX已经从SDK中移除,而改为D8。

看起来,Android Gradle插件4.x并没有意识到这一点。

目前,我只看到了两个解决方案。

  1. 为了保持AGP 4.x,人们应该将DX从30.0.3复制到31.0.0。
  2. 将AGP升级到7.x
Andrey Alekseenko 提问于2021-07-19
Peter Mortensen 修改于2021-07-27
这就是解决方案,另一个答案只是打补丁,而不是问题的实际解决方案。非常感谢您的分享。Hitesh Dhamshaniya 2021-07-29
澄清一下,似乎(从我的测试来看)Build Tools 31及以上版本与AGP 4.x及以下版本不兼容。对于AGP 4.x,请保持使用Build Tools 30.0.3(它似乎可以与SDK 31很好地构建)。一旦你升级到AGP 7.x(和Gradle 7),你可以使用Build Tools 31或32,没有任何问题。big_m 2021-12-14
不幸的是,将AppCompat升级到1.4版本需要针对API 31进行编译。Konsumierer 2021-12-21
这是本主题中唯一正确的解决方案,这应该是公认的答案。pablo432 2022-04-12
我有AGP 7.2.1,有同样的问题,通过文件重命名解决了:-()hanzolo 2022-06-29
#4楼
得票数 33

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 v10.13.6 (High Sierra)上的问题。

Chris S. 提问于2021-07-30
Peter Mortensen 修改于2021-09-05
这是令人敬畏的真正的解决方案。这在macOS Monterey IntelliJ IDEA ultimate API31上对我有效。降级到较低的api并不是解决办法。withoutOne 2021-11-16
这是一个较新的解决方案。在32.0.0版本中为我工作,谢谢!Team chang 2022-01-07
#5楼
得票数 20

更改这些设置后,它似乎工作正常。我从 SDK Manager 下载了 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"
    }
Anurag Singh 提问于2021-07-15
Peter Mortensen 修改于2021-07-27
#6楼
得票数 19

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

C:\Users\User\AppData\Local\Android\Sdk\build-tools\31.0.0

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

然后转到。

C:\Users\User\AppData\Local\Android\Sdk\build-tools\31.0.0\lib

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

你的问题现在将得到解决。

Yousuf 提问于2021-07-21
#7楼
得票数 16

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

我把这个添加到我的管道中,使我的构建再次运作起来。

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

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

Archimedes Trajano 提问于2021-07-22
Archimedes Trajano 修改于2021-07-30
你为ANDROID_SDK_ROOT设置的路径是什么?H_H 2021-07-30
在我的情况下,它是Windows - github.com/actions/virtual-environments/blob/main/images/win/&hellip。H_H 2021-07-30
边上的问题,Windows代理构建安卓系统的速度是否更快?Archimedes Trajano 2021-07-30
不,我不认为。我建立了ionic cordova应用程序,它需要25-30分钟。H_H 2021-07-30
非常好,我正试图让Ionic + cordova的构建与Github Actions上的Fastlane一起工作,这就做到了这一点。Kevin Boosten 2021-08-02
#8楼
得票数 13

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

我也是按照这个步骤做的。

  1. 打开项目结构→按 Ctrl + Alt + Shift + S

  2. 转到 Moduleproperties → *编译的 SDK 版本:30 构建工具版本:30.0.2

  3. 转到 默认配置目标 SDK 版本:30

  4. ApplyClose

  5. 菜单工具SDK 管理器

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

  7. Apply.

Meghna Saha 提问于2021-07-17
Peter Mortensen 修改于2021-07-27
#9楼
得票数 9

如果你仔细看一下日志,你就会发现。

Build-tool 31.0.0在path-to-sdk\build-tools\31.0.0\dx.bat中缺少DX。

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

Ramin 提问于2021-07-15
Peter Mortensen 修改于2021-07-27
在我的例子中,不仅是dx.bat,而且dx.jar也放在/build-tools/lib中。Akbolat SSS 2021-11-07
MacOS上的build-tools路径。/Users/username/Library/Android/sdkAkbolat SSS 2021-11-07
#10楼
得票数 7

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

  • compileSdkV版本 30
  • buildToolsVersion "30.0.0".BuildTools版本。
  • targetSdkV版本 30

将上述配置改成这样。

Enter image description here

vinay shetty 提问于2021-07-22
Peter Mortensen 修改于2021-07-27
#11楼
得票数 7

改变你的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"
    }

这将会起作用。

Ishant Garg 提问于2022-02-13
Peter Mortensen 修改于2022-08-15
这实际上是对我有帮助的,谢谢。Maksim Novikov 2022-07-01
你的意思是说,以后不需要在这里提到build tools version了吗?ThinkAndCode 2022-07-27
是的,@ThinkAndCodeIshant Garg 2022-08-10
那么,Android Studio怎么会知道要使用哪个版本的构建工具呢?ThinkAndCode 2022-08-10
#12楼
得票数 5

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

然后,它就成功了。

Yuval A. 提问于2021-08-22
Peter Mortensen 修改于2021-09-05
#13楼
得票数 4

首先,伙计们,如果你们面临这些类型的问题,你们可以尝试解决方案,我们需要将31号文件转移到30号文件。 之后,需要做一些重要的步骤:步骤。

  1. 要打开项目结构> 按Ctrl+Alt+Shift+S。
  2. 打开模块 > 属性 > 编译的 Sdk 版本: 30 构建工具版本: 30.0.2
  3. 单击 "默认配置"> 目标SDK版本:30

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

  1. 进入右上角区域,并点击SDK管理器图标。

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

  3. 打勾后,点击确定,然后安装。

  4. Android SDK > SDK Tool > 右下侧 > 显示软件包细节 > 在30.0.2选项上打勾,然后安装。 图片2 > 选择30.0.2

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

Shivansh Mishra 提问于2021-07-16
#14楼
得票数 4

To uninstall only Build-Tools 31.0.0 from Android Studio

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

Sachin Chillal 提问于2021-07-21
#15楼
得票数 4

我还没有足够的名气来发表评论,但有一个针对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
Dmitry 提问于2021-07-20
Dmitry 修改于2022-01-15
#16楼
得票数 4

从Build Tools 27.0.3或更高的版本开始,你不需要指定android.buildToolsVersion。

构建工具27.0.3或更高。请记住,你不再需要使用android.buildToolsVersion属性为构建工具指定一个版本--插件默认使用最低要求的版本。

来源(Developers.Android)

Ngima Sherpa 提问于2022-03-31
#17楼
得票数 3

我卸载并安装了31.0.0的软件包,但仍然显示错误。

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

在文件app/build.gradle中。

buildToolsVersion "31.0.0-rc2"
Monster Brain 提问于2021-07-24
Peter Mortensen 修改于2021-09-05
#18楼
得票数 3

我的Android Studio Arctic Fox 2020.3.1 Patch 2

下载的Android 12 and Android SDK Build-Tools 31 in Android SDK

buildToolsVersion "31.0.0"一起工作

build.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
}

build.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
Linh 提问于2021-09-10
#19楼
得票数 3

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


正如在其他问题中所指出的,问题在于 dx(或 dx.bat)不再可用。这是一个有目的的改变 2018年公布

建议将 d8 重命名为 dx,或从 build tools 30.0.0 复制它,解决这个问题,但 dx 不可能恢复。因此,你将不得不在每个开发人员的机器上修补每个构建工具的安装,并继续前进。

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

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

部分。从这里,选择升级到可能的最新版本(在我的例子中不只是4.x)。

Quick fixes menu open. Option to "Invoke Upgrade Assistant for upgrade to 7.1.3" selected

然后,我对字面上的所有东西都进行升级步骤。

Upgrade assistant window open with all items checked.

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

Publishing Setting section open with "Custom Main Gradle Template" and "Custom Launcher Gradle Template" open

两个文件都会有一行看起来像这样。

buildToolsVersion '**BUILDTOOLS**'

你可以用这句话来代替。

buildToolsVersion '30.0.0'

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

Patrick Martin 提问于2022-04-12
Peter Mortensen 修改于2022-08-15
#20楼
得票数 2

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

打开属性选项卡并更改以下内容:
编译的 SDK 版本:30
构建工具版本:30.0.2

之后打开 Default Config 选项卡并更改:
目标 SDK 版本:30

Mubtasim Fuad 提问于2021-07-15
Mubtasim Fuad 修改于2021-07-15
#21楼
得票数 2

我取消了SDK管理器下的31,点击Android 11.0(R)恢复到30,并更新了Build Gradle(项目),将compileSdkVersion和targetSdkVersion从31改成30。

我还不得不将buildToolsVersion更新为"30.0.2"而不是30。现在它可以工作了。

Meg 提问于2021-07-15
Peter Mortensen 修改于2021-07-27
#22楼
得票数 2

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

compileSdkVersion 30
buildToolsVersion "30.0.0"
defaultConfig {
    targetSdkVersion 30
}
neelkanth_vyas 提问于2021-07-21
Peter Mortensen 修改于2021-07-27
#23楼
得票数 2

这是一个与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"
    }
}
Dinesh Radhakrishnan 提问于2021-07-24
Peter Mortensen 修改于2021-07-27
#24楼
得票数 2

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

你真正应该做的是安装最新的Android Studio Beta版本,如果你正在使用Beta SDK。随着最新的Android Studio Beta版本支持最新的AGP,它正确地支持SDK 31。

joe1806772 提问于2021-07-28
Peter Mortensen 修改于2021-09-05
#25楼
得票数 2

在build.gradle(模块)文件中。改变以下设置。

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

vinay shetty 提问于2021-09-26
#26楼
得票数 1

我首先关注 user16475264 的回答,但真正的问题(至少在我的情况下)原来是 AGP(Android Gradle 插件)的版本。因此,在升级到 v7 之后,我回滚了对可执行文件和 JAR 文件的更改:~/Library/Android/sdk/build-tools/31.0.0 中的dx -> d8。这有效

Android Gradle Build plugin

ddsultan 提问于2021-09-09
Peter Mortensen 修改于2021-09-10
你在这里改成了哪一个? 具体说来TheRealChx101 2022-01-05
@TheRealChx101,默认情况下(我的Android Studio版本)AGP(Android Gradle Plugin)是4.x,我按照用户16475264的答案做了,但升级到v7后,原来的问题就没有了,所以我把用户16475264的答案回滚了一遍。ddsultan 2022-01-05
#27楼
得票数 1

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

kevinzhow 提问于2021-10-09
#28楼
得票数 0

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

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

检查项目代码面板,进入Gradle Scripts ->build.gradle文件。

改变3个地方:compileSdkVVersion、buildToolsVersion、targetSdkVVersion,从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处缺失DX,Build-tool 31.0.0在path-to-sdk\build-tools\31.0.0\lib\dx.jar处缺失DX

你可以尝试从以前的版本构建工具中复制它。我从30.0.3版本做的,它对我来说很有效。

Akhilesh 提问于2021-09-01
#29楼
得票数 0

请检查您的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"
    }

或者说。

Solution 2

从SDK管理器中下载SDK 31。

AMJAD AFRIDI 提问于2021-08-11
Peter Mortensen 修改于2021-09-05
什么文件?build.gradle?Peter Mortensen 2021-09-05
构建.gradle(应用程序)AMJAD AFRIDI 2021-10-09
#30楼
得票数 0

我试着从SDK管理器中卸载了工具31。它成功地做到了,但是当构建一个项目时,它将重新安装,同样的问题发生了。

然后我试着把d8重命名为dx的建议。结果它开始运行一堆任务,导致整个电脑挂起。鉴于该项目只是一个简单的活动。我不知道为什么Gradle需要不断地连接到互联网并占用这么多的CPU使用率。

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

placid chat 提问于2021-09-07
Peter Mortensen 修改于2021-09-08
#31楼
得票数 0

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

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

Tuan Dat Tran 提问于2022-08-11
Peter Mortensen 修改于2022-08-15
#32楼
得票数 0

如果你使用的是Mac,并完成了删除build tools 31/32,并再次安装它,但它仍然无法工作。

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

chandra 提问于2022-06-27
Peter Mortensen 修改于2022-08-15
#33楼
得票数 0

转到 Android Studio 设置 → Android SDKSDK 工具 →。在列表中,标记 Google Play 许可和Apply

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

Bagher 提问于2021-10-19
Peter Mortensen 修改于2022-08-15
#34楼
得票数 0

适用于android 12目标SDK API 31

compileSdkVersion 31
buildToolsVersion 31.1.0

安卓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'
    } 
Ashok Kumar 提问于2022-09-29