我用的是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!项目,真的不应该这么难。
我的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
在许多博客中,你会发现解决方案是降级到API 30,然而,如果你想尝试API 31,降级并不是一个真正的解决方案。幸运的是,有一种方法可以让构建工具为API 31工作。API 31构建工具崩溃的原因是2个丢失的文件:
dx.bat
dx.jar
然而,这些文件以另一个名称存在,具体来说:
d8.bat
d8.jar
因此,防止出现这种异常的变通办法是,复制上面提到的以新名称存在的文件,或者创建一个符号链接(Windows中的快捷方式),它就会神奇地工作。这将适用于所有的操作系统,但它的方式将取决于每个平台。
窗户
你可以手动或使用命令提示符,为dx.bat创建符号链接(记得用你的SDK目录替换):
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
和为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
在复制并重命名上述文件或运行前面的命令来创建符号链接(快捷方式)后,你将在build-tools和build-tools/lib目录下有两个新文件:
MacOS和Linux
如果你使用的是MacOS或Linux,在终端上运行以下命令就可以了(它会切换到构建工具目录,然后将d8移动到dx,将d8.jar移动到dx.jar):
cd ~/Library/Android/sdk/build-tools/31.0.0 && mv d8 dx && cd lib && mv d8.jar dx.jar
再次尝试在Android Studio中构建您的项目,异常不应该再出现了!