Android Studio错误 Installed Build Tools revision 31.0.0 is corrupted
我在Android Studio 4.2.2上。我创建了一个新的项目,没有在启动代码中添加任何东西,每当我点击build或run,我就会得到这个错误:
安装的Build Tools修订版31.0.0已损坏。请删除并使用SDK管理器重新安装。
我看了其他帖子的建议,但这些解决方案都不奏效。以下是我所尝试的。
- SDK管理器→SDK工具→勾选"显示软件包细节",取消勾选31.0.0,然后点击"应用"→卸载31.0.0→勾选31.0.0并重新安装它
- 在 SDK Manager 中,取消选择 31.0.0 并尝试安装旧版本(例如,我尝试过 30.0.3)并将 build.gradle 中的“buildToolsVersion”更新为已安装的版本
- 前往Project Structure → Properties,确认“Build Tools Version”和“Compiled SDK Version”选择了31.0.0
- 手动删除 build-tools 文件夹中的东西;即
rm -rf /path/to/android/sdk/build-tools/31.0.0
(它不像其他一些帖子所描述的那样以“-rc”结尾) - 重新启动安卓工作室
- 重新安装安卓工作室
我是一个Android新手,只是想建立一个Hello, World!项目,这真的不应该是这么难的。
buildToolsVersion "31.0.0"
改为buildToolsVersion "30.0.3"
。
- Kevin McCarpenter 2021-07-15
首先,我在Android Studio 4.2.2中遇到了这个问题,你不需要将SDK构建工具从31降级到30,也不需要改变SDK的编译版本。
主要问题是SDK构建工具31中缺少两个文件,它们是:。
- dx.bat
- dx.jar
解决方案是,这些文件在文件位置中被命名为d8,所以将它们的名字改为dx就可以解决错误。
具体步骤如下。
For Windows
前往该地点
"C:\Users\user\AppData\Local\Android\Sdk\build-tools\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文件夹。
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
现在,运行你的项目。
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
cd ~/Library/Android/sdk/build-tools/31.0.0 && mv d8 dx && cd lib && mv d8.jar dx.jar
.
- Christopher Pickslay 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
遇到了同样的问题,通过修改几行字就解决了。
检查项目代码面板,然后转到Gradle Scripts → build.gradle 文件,
- 将三个地方从 31 改为 30:compileSdkVersion、buildToolsVersion、targetSdkVersion
- 你会注意到在修改过的行上出现了一个电灯泡。点击并选择同步[到版本30]。Android Studio将自动下载BuildTool V30并改变项目设置。
现在运行该应用程序。它对我有用。
Failed to find Build Tools revision 31.0.0-rc4
- CyberShark 2021-08-01
重点不是降低目标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
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)上的问题。
更改这些设置后,它似乎工作正常。我从 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"
}
为了解决这个问题,首先要到以下位置去。
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。
你的问题现在将得到解决。
对于那些使用Azure DevOps并且需要在30.0.3版本中工作的人来说,你需要卸载31.0.0版本。
我把这个添加到我的管道中,使我的构建再次运作起来。
- bash: |
$ANDROID_SDK_ROOT/tools/bin/sdkmanager --uninstall 'build-tools;31.0.0'
环境变量$ANDROID_SDK_ROOT在预设的变量中。
31.0.0版本本身已经损坏,我们需要降级到30版本。
我也是按照这个步骤做的。
打开项目结构→按 Ctrl + Alt + Shift + S
转到 Module → properties → *编译的 SDK 版本:30 构建工具版本:30.0.2
转到 默认配置 → 目标 SDK 版本:30
Apply 和Close。
菜单工具 → SDK 管理器
在我的情况下,取消API 31来卸载,检查Android 11.0(R)来安装(30.0.3)。
Apply.
如果你仔细看一下日志,你就会发现。
Build-tool 31.0.0在path-to-sdk\build-tools\31.0.0\dx.bat中缺少DX。
你可以尝试从以前的版本中复制它,但如果你不得不告诉你的整个团队做同样的事情,并且在你的服务器管道上仍然失败,那就不好办了。我在31.0.0-rc5版本中也遇到了这种情况。
dx.bat
,而且dx.jar
也放在/build-tools/lib
中。
- Akbolat SSS 2021-11-07
/Users/username/Library/Android/sdk
- Akbolat SSS 2021-11-07
在文件build.gradle(模块:HelloWorld.app)。
- compileSdkV版本 30
- buildToolsVersion "30.0.0".BuildTools版本。
- targetSdkV版本 30
将上述配置改成这样。
改变你的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"
}
这将会起作用。
build tools version
了吗?
- ThinkAndCode 2022-07-27
我从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
。
然后,它就成功了。
首先,伙计们,如果你们面临这些类型的问题,你们可以尝试解决方案,我们需要将31号文件转移到30号文件。 之后,需要做一些重要的步骤:步骤。
- 要打开项目结构> 按Ctrl+Alt+Shift+S。
- 打开模块 > 属性 > 编译的 Sdk 版本: 30 构建工具版本: 30.0.2
- 单击 "默认配置"> 目标SDK版本:30
之后,你的任务就没有了,在某些情况下,你仍然可以看到这个配置不被接受,你也需要做这些步骤。
进入右上角区域,并点击SDK管理器图标。
选择Android SDK > 图片1,你需要在所有你需要的Android版本上打勾*。
打勾后,点击确定,然后安装。
Android SDK > SDK Tool > 右下侧 > 显示软件包细节 > 在30.0.2选项上打勾,然后安装。 图片2 > 选择30.0.2
5)现在完成了,点击确定安装>应用你的好去处。
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
我还没有足够的名气来发表评论,但有一个针对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
从Build Tools 27.0.3或更高的版本开始,你不需要指定android.buildToolsVersion。
构建工具27.0.3或更高。请记住,你不再需要使用android.buildToolsVersion属性为构建工具指定一个版本--插件默认使用最低要求的版本。
我卸载并安装了31.0.0的软件包,但仍然显示错误。
我使用了RC2构建工具,在没有降级到SDK 30版本的情况下,它的编译和运行都很正常。
在文件app/build.gradle中。
buildToolsVersion "31.0.0-rc2"
我的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
我在这里回答了这个问题,但我将复制/粘贴答案,因为它是相关的。
正如在其他问题中所指出的,问题在于 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)。
然后,我对字面上的所有东西都进行升级步骤。
我的问题是 Unity - 特定于:我需要使用系统 Android SDK 而不是内置的,但 Unity 本身喜欢重新生成这些构建文件,并且只会获取它可以找到的最新构建工具。为了减少手动步骤并避免导出我的项目,我选择从“播放器设置>发布设置”窗口生成我的模块级 build.gradle
文件:
两个文件都会有一行看起来像这样。
buildToolsVersion '**BUILDTOOLS**'
你可以用这句话来代替。
buildToolsVersion '30.0.0'
从Unity来看,这让我可以像以前一样构建和部署项目,而无需修改buildtools
安装。
按Ctrl+Alt+Shift+S打开项目结构。从左侧选择模块。
打开属性选项卡并更改以下内容:
编译的 SDK 版本:30
构建工具版本:30.0.2
之后打开 Default Config 选项卡并更改:
目标 SDK 版本:30
我取消了SDK管理器下的31,点击Android 11.0(R)恢复到30,并更新了Build Gradle(项目),将compileSdkVersion和targetSdkVersion从31改成30。
我还不得不将buildToolsVersion更新为"30.0.2"而不是30。现在它可以工作了。
尝试重新安装SDK 31并重启Android Studio,它应该会起作用。否则,从SDK管理器中,将SDK 30安装到系统中,并将应用程序的构建Gradle文件配置为
compileSdkVersion 30
buildToolsVersion "30.0.0"
defaultConfig {
targetSdkVersion 30
}
这是一个与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"
}
}
这里有许多错误的和误导性的答案。
你真正应该做的是安装最新的Android Studio Beta版本,如果你正在使用Beta SDK。随着最新的Android Studio Beta版本支持最新的AGP,它正确地支持SDK 31。
在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"
}
我首先关注 user16475264 的回答,但真正的问题(至少在我的情况下)原来是 AGP(Android Gradle 插件)的版本。因此,在升级到 v7 之后,我回滚了对可执行文件和 JAR 文件的更改:~/Library/Android/sdk/build-tools/31.0.0
中的dx
-> d8
。这有效
4.x
,我按照用户16475264的答案做了,但升级到v7
后,原来的问题就没有了,所以我把用户16475264的答案回滚了一遍。
- ddsultan 2022-01-05
将gradle升级到7.0.2可能会有帮助
这个问题有多种解决方案,但有一种方案在逻辑上应该可以解决这个问题,即卸载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版本做的,它对我来说很有效。
请检查您的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。
我试着从SDK管理器中卸载了工具31。它成功地做到了,但是当构建一个项目时,它将重新安装,同样的问题发生了。
然后我试着把d8重命名为dx的建议。结果它开始运行一堆任务,导致整个电脑挂起。鉴于该项目只是一个简单的活动。我不知道为什么Gradle需要不断地连接到互联网并占用这么多的CPU使用率。
在硬重启和fsck之后,项目的构建工作正常。
对于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.
如果你使用的是Mac,并完成了删除build tools 31/32,并再次安装它,但它仍然无法工作。
尝试重新启动你的Mac。我刚刚做了,它解决了我所有的问题。
转到 Android Studio 设置 → Android SDK → SDK 工具 →。在列表中,标记 Google Play 许可和Apply。
它将为你下载一个文件,然后同步你的项目,这就完成了。
适用于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'
}