我用的是Android Studio 4.2.2。我创建了一个新项目,还没有添加任何东西到启动器代码,每当我点击构建或运行,我得到这个错误:

已安装的构建工具版本31.0.0已损坏。使用SDK管理器删除并重新安装。

我看了其他帖子的建议,但这些解决方案都不起作用。以下是我的尝试:

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

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


当前回答

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


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

建议将d8重命名为dx或从构建工具30.0.0复制它将解决问题,但dx不太可能返回。因此,今后你将不得不在每个开发人员的机器上为每个构建工具安装补丁。

更向前兼容的解决方案是升级你的Android Gradle插件。这并不像在Gradle中更改数字那么简单,但我发现Android Studio的升级过程对我的项目很有效。如果您打开项目级构建。Gradle文件,打开快速修复菜单从灯泡在你的

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

部分。从这里开始,选择升级到最新的版本(而不是仅仅4个。对我来说是X)。

然后我对所有的东西都运行升级步骤:

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

这两个文件都有一行,看起来像这样:

buildToolsVersion '**BUILDTOOLS**'

你可以用:

buildToolsVersion '30.0.0'

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

其他回答

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

然后就成功了。

我的Android Studio Arctic Fox 2020.3.1补丁2 与 下载了Android SDK中的Android 12和Android SDK Build-Tools 31

使用buildToolsVersion "31.0.0"

构建。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
}

构建。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

遇到了同样的问题,并通过一些行更改解决了问题。

检查项目代码面板,并进入Gradle Scripts→build。gradle文件,

将三个位置从31更改为30:compileSdkVersion、buildToolsVersion和targetSdkVersion 您将注意到在修改后的线路上发生了灯泡撞击。单击,选择“sync [to version 30]”。Android Studio将自动下载BuildTool V30并更改项目设置。

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

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

compileSdkVersion 30
buildToolsVersion "30.0.0"
defaultConfig {
    targetSdkVersion 30
}

更改这些设置后,它似乎可以正常工作。我从SDK管理器下载了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"
    }