Android Studio error "Installed Build Tools revision 31.0.0 is corrupted"
AndroidAndroid StudioAndroid EmulatorAndroid Studio-4.2Android Problem Overview
I'm on Android Studio 4.2.2. I created a new project and haven't added anything to the starter code and whenever I click build or run, I get this error:
> Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.
I've looked at other posts' suggestions, but neither of those solutions worked. Here's what I've tried:
- 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
I'm an Android noob just trying to set up a hello world project, and it really shouldn't be this hard.
Android Solutions
Solution 1 - Android
First of all, I faced this issue in Android Studio 4.2.2 and you do not need to downgrade the SDK build tool from 31 to 30 or change compile SDK version.
The main problem is the two files missing in SDK build tool 31 that are:
- dx.bat
- dx.jar
The solution is that these files are named d8 in the file location so changing their name to dx will solve the error.
The steps are below.
For Windows
-
go to the location
"C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0"
-
find a file named d8.bat. This is a Windows batch file.
-
rename d8.bat to dx.bat.
-
in the folder lib ("C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0\lib")
-
rename d8.jar to dx.jar
Remember AppData is a hidden folder. Turn on hidden items to see the AppData folder.
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
Now run your project.
Solution 2 - Android
The same problem was encountered and solved with a few line changes.
Check the Project code panel, and go to Gradle Scripts → build.gradle file,
- Change three places from 31 to 30: compileSdkVersion, buildToolsVersion, and targetSdkVersion
- You'll notice a lightbulb hit occurring on modified lines. Click and choose sync [to version 30]. Android Studio will automatically download BuildTool V30 and change project settings.
Now run the app. It works for me.
Solution 3 - Android
The point is not to downgrade target API level, but to build exactly for API level 31 to prepare and test an app for Android 12!
It looks like DX is removed from SDK in favor of D8.
It looks like that Android Gradle plugin 4.x is not aware of that.
At the moment I see only two solutions:
- To stay with AGP 4.x, one should copy DX from 30.0.3 to 31.0.0
- Upgrade AGP to 7.x
Solution 4 - Android
The solution for Mac is pretty similar to Windows, yet not fully conclusive from reading the Windows solution. The paths and file names are different, but the problem is basically the same.
- Open the terminal application and type the commands below
- Hit Enter after every command line you type to execute the command
- Type
cd /Users/admin/Library/Android/sdk/build-tools/
- Attention: Your user directory name may be different from "admin"
- Navigate to the corresponding version: type
cd 31.0.0
- Type
cp d8 dx
- Type
cd lib
- Type
cp d8.jar dx.jar
This fixed my issues on macOS v10.13.6 (High Sierra).
Solution 5 - Android
After changing these settings, it seems to work fine. I downloaded SDK version 30 from SDK Manager.
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"
}
Solution 6 - Android
In order to fix the issue, firstly go to the following location:
> C:\Users\User\AppData\Local\Android\Sdk\build-tools\31.0.0
Then find the file d8 (Windows batch file) and rename it to dx.
Then go to:
> C:\Users\User\AppData\Local\Android\Sdk\build-tools\31.0.0\lib
Then find the file d8 (Executable Jar File) and rename is to dx.
Your problem will be solved now.
Solution 7 - Android
For those who are using Azure DevOps and require things to work with 30.0.3 you need to uninstall version 31.0.0
I added this to my pipeline to make my builds work again.
- bash: |
$ANDROID_SDK_ROOT/tools/bin/sdkmanager --uninstall 'build-tools;31.0.0'
The environment variable $ANDROID_SDK_ROOT is in the preset variables
Solution 8 - Android
Version 31.0.0 itself is corrupt, and we need to downgrade to 30.
Steps I followed for the same:
-
Open project structure → press Ctrl + Alt + Shift + S
-
Go to Module → properties → *Compiled SDK Version: 30 Build Tools Version: 30.0.2
-
Go to Default Config → Target SDK Version: 30
-
Apply and Close.
-
Menu Tools → SDK Manager
-
Uncheck API 31 to uninstall and check Android 11.0(R) to install (30.0.3) in my case.
-
Apply.
Solution 9 - Android
If you carefully look at the logs you'll see:
> Build-tool 31.0.0 is missing DX at path-to-sdk\build-tools\31.0.0\dx.bat
You can try copying it from previous versions, but that won't lend well if you have to tell your entire team to do the same and it still fails on your server pipeline. This happened to me on 31.0.0-rc5 release as well.
Solution 10 - Android
In file build.gradle (Module: HelloWorld.app):
- compileSdkVersion 30
- buildToolsVersion "30.0.0"
- targetSdkVersion 30
Change the above configuration to this:
Solution 11 - Android
Change your Gradle build from :
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"
}
to:
android {
compileSdk 31
defaultConfig {
applicationId "com.example.eg"
minSdk 23
targetSdk 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
This will work
Solution 12 - Android
I downloaded dx.bat
file from https://android.googlesource.com/platform/dalvik/+/master/dx/etc/dx.bat.
I put it in \build-tools\31.0.0
and then downloaded the dx.jar
file (which was also missing, by the error message I got)
from http://www.java2s.com/Code/Jar/d/Downloaddxjar.htm.
I put it into directory \build-tools\31.0.0\lib
.
Then it worked.
Solution 13 - Android
First of all, guys if you're facing these types of issues you can try the solution where we need to shift 31 to 30. And after that some important steps are required to do: Step:
- To open project structure > Press Ctrl+Alt+Shift+S
- Open Module > properties > Compiled Sdk Version: 30 Build Tools Version: 30.0.2
- Click on Default Config > Target SDK Version: 30
After that, your task is not, in some cases still, you can see this configuration is not accepted, you need to do these steps also:
-
Go to the top Right area, and click on SDK Manager Icon.
-
Select Android SDK > image 1 where you need to tick all Android version which you need*
-
After tick Click OK and then install.
-
Android SDK > SDK Tool > right down side > show Package detail > tick on 30.0.2 option and then install. image 2 > select 30.0.2
- Now done click OK install> apply your good to go.
Solution 14 - Android
I don't have enough reputation for commenting yet, but there is the solution with symbolic links for Windows, and I'd like to add that it works for macOS, too.
That's the command for Mac's terminal:
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
Solution 15 - Android
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
Solution 16 - Android
I unistalled and installed the 31.0.0 package and still it was showing the error.
I used RC2 build tools and it compiled and ran fine without downgrading to SDK version 30.
In file app/build.gradle:
buildToolsVersion "31.0.0-rc2"
Solution 17 - Android
My Android Studio Arctic Fox 2020.3.1 Patch 2
with
downloaded Android 12 and Android SDK Build-Tools 31 in Android SDK
working with buildToolsVersion "31.0.0"
build.gradle (Project)
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 (Module)
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
Solution 18 - Android
I unchecked 31 under the SDK Manager, clicked Android 11.0(R) to revert back to 30, and updated the Build Gradle (project) to change compileSdkVersion and targetSdkVersion from 31 to 30.
I also had to update buildToolsVersion to "30.0.2" instead of 30. Now it works.
Solution 19 - Android
Press Ctrl+Alt+Shift+S to open project structure. The select Module from the left.
Open Properties tab and change the followings:
Compiled Sdk Version: 30
Build Tools Version: 30.0.2
After that open Default Config tab and change:
Target SDK Version: 30
Solution 20 - Android
Try to reinstall the SDK 31 again and restart Android Studio, it should work. Otherwise, from the SDK Manager, install the SDK 30 to the System and configure the app build Gradle file as
compileSdkVersion 30
buildToolsVersion "30.0.0"
defaultConfig {
targetSdkVersion 30
}
Solution 21 - Android
It's a conflict issue with Android studio and SDK 31.
Convert your build.gradle file like this:
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"
}
}
Solution 22 - Android
There are so many wrong and misleading answers here.
The only thing you should really do is to install the latest Android Studio Beta version if you're using the Beta SDK. With the latest Android Studio Beta comes support for the latest AGP, which correctly supports SDK 31.
Solution 23 - Android
In build.gradle(Module) file. Change the following settings.
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"
}
Solution 24 - Android
You don't need to specify android.buildToolsVersion from Build Tools 27.0.3 or higher.
> Build Tools 27.0.3 or higher. Keep in mind, you no longer need to > specify a version for the build tools using the > android.buildToolsVersion property—the plugin uses the minimum > required version by default.
Source (Developers.Android)
Solution 25 - Android
I first followed user16475264's answer, but the real issue (at least in my case) turned out to be the version of the AGP (Android Gradle Plugin). So, after upgrading to v7, I rolled back my changes for both, the executable and the JAR file: dx
-> d8
in ~/Library/Android/sdk/build-tools/31.0.0
. This worked
Solution 26 - Android
Check your Gradle build:
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"
}
Or,
Solution 2
Download SDK 31 from SDK manager.
Solution 27 - Android
There are multiple solutions to this issue though one which should logically fix it does not work i.e. uninstalling build tool version 31.0.0 and reinstalling that. This solution does not work and Android Studio team probably need to look into it.
Currently which seems to work is: Solution 1 (Downgrade Build Tool Version being used in project)
Check the Project code panel, and go to Gradle Scripts –> build.gradle file,
Change 3 places: compileSdkVersion, buildToolsVersion, targetSdkVersion from 31 to 30 You’ll notice a lightbulb hit occurring on modified lines, click and choose sync [to version 30]. The Android Studio will automatically download BuildTool V30 and change project settings.
Solution 2 (Get missing dx.bat and dx.jar files from previous version build tools) Build-tool 31.0.0 is missing DX at path-to-sdk\build-tools\31.0.0\dx.bat and Build-tool 31.0.0 is missing DX at path-to-sdk\build-tools\31.0.0\lib\dx.jar
You can try copying it from previous version build tools. I did from Version 30.0.3 and it worked for me.
Solution 28 - Android
I tried uninstalling tool 31 from the SDK manager. It successfully did so, but when building a project, it will reinstall and the same problem happens.
Then I tried the rename d8 to dx suggestion. And it starts running a bunch of tasks and causes the entire computer to hang. Seeing as how the project is just a simple activity. I'm not sure why Gradle needs to constantly connect to the Internet and take up so much of CPU usage.
After a hard reboot and fsck later, the project builds fine.
Solution 29 - Android
Upgrade gradle to 7.0.2 might helps
Solution 30 - Android
go to android studio setting->android SDK-> SDK tools-> in the list mark google play licensing and apply. it will download you a file and then sync your project and it's done.
Solution 31 - Android
I answered this question over here, but I'll copy/paste the answer as it's relevant:
As pointed out in other issues, the problem is that dx (or dx.bat) is no longer available. This was a purposeful change announced in 2018.
Suggested resolutions of renaming d8 to dx or copying it from build tools 30.0.0 will resolve the issue, but dx isn't likely to return. So you'll be stuck patching every build tools installation on every developer's machine going forward.
The more forward-compatible solution is to upgrade your Android gradle plugin. This isn't as straightforward as just changing the number in gradle, but I find that Android Studio's upgrade process works well for my projects. If you open your project-level build.gradle
file, open up the quick fixes menu from the lightbulb over your
dependencies{
classpath 'com.android.tools.build:gradle:...'
section. From here, choose to upgrade to the newest possible version (not just 4.x in my case).
Then I run the upgrade steps for literally everything:
My issue was Unity specific though: I needed to use the system Android SDK rather than the one built in, but Unity itself likes to regenerate these build files and will just grab the newest buildtools it can find. To reduce manual steps and to avoid having to export my project, I instead chose to generate my module-level build.gradle
files from my "Player Settings>Publishing Settings" window:
Both files will have a line that looks like:
buildToolsVersion '**BUILDTOOLS**'
Which you can replace with:
buildToolsVersion '30.0.0'
From Unity, this lets me build and deploy projects as I had before without modifying the buildtools
installation.