Reputation: 6209
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:
rm -rf /path/to/android/sdk/build-tools/31.0.0
(it doesn't end in "-rc" like some other posts have described)I'm an Android noob just trying to set up a Hello, World! project, and it really shouldn't be this hard.
Upvotes: 589
Views: 649884
Reputation: 5378
Go to ~/Library/Android/sdk/build-tools/
and remove the corrupted version:
open ~/Library/Android/sdk/build-tools
Upvotes: 1
Reputation: 747
M1 Macbook solution:
go to Terminal:
Step1 : cd ~/Library/Android/sdk/build-tools/31.0.0
Step2: mv d8 dx
Step3a: cd lib
Step3b: mv d8.jar dx.jar
Step 4: Rebuild your project in Android studio. or simply run your project from android studio
Note if you are running a different version other than 31.0.0 then change the version in the step 1 command line.
Upvotes: 12
Reputation: 2206
I had this same issue using SDK Build tools 34.0.0. My fix was to update gradle:
gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
android/build.gradle:
classpath("com.android.tools.build:gradle:7.3.1")
Upvotes: 2
Reputation: 560
I was getting the same error for API 33. I tried several solutions answered above but what worked for me was uninstalling all the API and dependencies of version 33.0.0 and reinstalling them back.
It takes some time but it worked. Here's how you can uninstall and install them back in Android Studio - https://stackoverflow.com/a/54851554/7584658
Hope that helps. Thanks
Upvotes: 3
Reputation: 8766
build-tools
folder. In Mac, it's at /Users/<username>/Library/Android/sdk/build-tools
.d8.exe
to dx.exe
lib
folderd8.jar
to dx.jar
Upvotes: 6
Reputation: 421
In many blogs, you will find that the solution is to downgrade to the API 30, however, if you want to experiment with the API 31, downgrading isn't a real solution. Fortunately, there's a way to make the build tools work for API 31. The cause of the corruption of the build tools for API 31 is 2 missing files:
These files exist however with another name, specifically:
So the workaround to prevent this exception from appearing is either to copy the mentioned files that exist with the new names or create a symbolic link (shortcut in Windows) and it will magically work. This will work in all the operative systems, however the way to do it will depend of every platform.
Windows You can do this manually or with the command prompt, to create the symlink for dx.bat (remember to replace the SDK directory with yours):
mklink C:\Users\username\AppData\Local\Android\Sdk\build-tools\31.0.0\dx.bat C:\Users\username\AppData\Local\Android\Sdk\build-tools\31.0.0\d8.bat
And the command to create the symlink for dx.jar:
mklink C:\Users\username\AppData\Local\Android\Sdk\build-tools\31.0.0\lib\dx.jar C:\Users\username\AppData\Local\Android\Sdk\build-tools\31.0.0\lib\d8.jar
After copying and renaming the mentioned files or running the previous commands to create the symbolic links (shortcuts), you will have new 2 files in the build-tools and build-tools/lib directory:
MacOS and Linux If you are using MacOS or Linux, running the following command in the terminal will do the trick (it switches to the build tools directory and then moves the d8 to dx and d8.jar to dx.jar):
cd ~/Library/Android/sdk/build-tools/31.0.0 && mv d8 dx && cd lib && mv d8.jar dx.jar
Try to build your project in Android Studio once again and the exception shouldn't appear anymore!
Upvotes: 7
Reputation: 652
My problem was in unity when creating .abb file.
The only thing i did was to uncheck "Split Application Binary".
The error i had before was saying, installed build tools revision 33.0.1 is corrupted. Also the JAVA_TOOL_OPTIONS error.
I have Gradle 6.1.1 (to build .abb), and Android SDK paths (the one that is installed from android studio). NDK & SDK I use the unity default.
My build finished fine. I ran it with scripting backend Mono setting. Hopefully works with the IL2CPP too.
If this works for you, give my solution a vote :)
Upvotes: 0
Reputation: 15453
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:
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.
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.
Run the following in the Terminal:
# 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.
Upvotes: 1529
Reputation: 1271
For android 12 target sdk API 31
compileSdkVersion 31
buildToolsVersion 31.1.0
The Android gradle plugin(AGP) should have minimum version set as
7.0.2 or above
android gradle wrapper version could be set
gradle-7.2-bin.zip
With above configuration the build error will be resolved and you no need to downgrade the build tool version to 30.0.2
Also, if you face and intellij annotations related build error, add below configuration in your app/build.gradle file
configurations {
compile.exclude group: 'com.intellij', module: 'annotations'
implementation.exclude group: 'com.intellij', module:'annotations'
}
Upvotes: 1
Reputation: 3131
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.
Upvotes: 8
Reputation: 29
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 synchronise your project and it's done.
Upvotes: 0
Reputation: 859
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.
Upvotes: 13
Reputation: 17
If you were using a Mac and finished deleting build tools 31/32 and installed it again, but it still didn't work:
Try to restart your Mac. I just did it and it solved all my problems.
Upvotes: 0
Reputation: 453
For CircleCI, add this step before building, as build tools 31 is not available by default on 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
Remember pointing to the cmdline-tools
, so that sdkmanager
can run without error with Java 11.
Upvotes: 0
Reputation: 1555
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)
Upvotes: 5
Reputation: 91
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
Upvotes: 5
Reputation: 981
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"
}
Upvotes: 2
Reputation: 60999
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
Upvotes: 3
Reputation: 2307
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
Upvotes: 1
Reputation: 189
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.
Upvotes: 0
Reputation: 2119
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"
Upvotes: 3
Reputation: 616
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.
Upvotes: 2
Reputation: 1257
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.
cd /Users/admin/Library/Android/sdk/build-tools/
cd 31.0.0
cp d8 dx
cd lib
cp d8.jar dx.jar
This fixed my issues on macOS v10.13.6 (High Sierra).
Upvotes: 61
Reputation: 6099
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.
Upvotes: 6
Reputation: 1
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,
Download SDK 31 from SDK manager.
Upvotes: 0
Reputation: 196
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.
Upvotes: 0
Reputation: 41580
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
Upvotes: 17
Reputation: 380
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"
}
}
Upvotes: 2
Reputation: 981
In file build.gradle (Module: HelloWorld.app):
Change the above configuration to this:
Upvotes: 7