Android Studio error "Installed Build Tools revision 31.0.0 is corrupted" – Dev

The best answers to the question “Android Studio error "Installed Build Tools revision 31.0.0 is corrupted"” in the category Dev.

QUESTION:

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:

  1. 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
  2. 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
  3. Went to Project StructureProperties and verified that 31.0.0 is selected for “Build Tools Version” and “Compiled SDK Version”
  4. 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)
  5. Restart Android Studio
  6. 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.

ANSWER:

The same problem was encountered and solved with a few line changes.

Check the Project code panel, and go to Gradle Scriptsbuild.gradle file,

  1. Change three places from 31 to 30: compileSdkVersion, buildToolsVersion, and targetSdkVersion
  2. 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.

ANSWER:

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:

  1. dx.bat
  2. 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

  1. go to the location

     "C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0"
    
  2. find a file named d8.bat. This is a Windows batch file.

  3. rename d8.bat to dx.bat.

  4. in the folder lib (“C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0\lib”)

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

ANSWER:

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"
    }

ANSWER:

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:

  1. To stay with AGP 4.x, one should copy DX from 30.0.3 to 31.0.0
  2. Upgrade AGP to 7.x