我用的是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!项目,真的不应该这么难。


当前回答

M1 Macbook解决方案:

前往终点站:

步骤1: cd ~ /图书馆/ Android / sdk /构建工具/ 31.0.0

步骤2: Mv d8 dx

步骤3: MV D8.jar DX.jar

步骤4:在Android studio中重建项目。或者简单地从android studio运行您的项目

注意,如果运行的版本不同于31.0.0,则在步骤1命令行中更改版本。

其他回答

我还没有足够的声誉评论,但有一个解决方案与符号链接的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

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

compileSdkVersion 30
buildToolsVersion "30.0.0"
defaultConfig {
    targetSdkVersion 30
}

这个问题有多种解决方案,但有一个解决方案应该在逻辑上解决它,即卸载构建工具31.0.0版本并重新安装。这个解决方案并不管用,Android Studio团队可能需要研究一下。

目前看来有效的方法是: 解决方案1(降低项目中使用的构建工具版本)

检查项目代码面板,然后转到Gradle Scripts - > build。gradle文件,

改变3个位置:compileSdkVersion, buildToolsVersion, targetSdkVersion从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和 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"
    }

Or,

解决方案2

从SDK管理器下载SDK 31。

在文件构建中。gradle(模块:HelloWorld.app):

compileSdkVersion 30 buildToolsVersion“30.0.0” targetSdkVersion 30

将上述配置更改为: