我用的是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!项目,真的不应该这么难。
首先,伙计们,如果你们面临着这类问题,你们可以尝试把31移到30的解决方案。
在这之后,需要做一些重要的步骤:
步骤:
打开项目结构>按Ctrl+Alt+Shift+S
打开模块>属性>编译Sdk版本:30
构建工具版本:30.0.2
单击Default Config > Target SDK Version: 30
之后,你的任务就没有了,在某些情况下仍然,你可以看到这个配置不被接受,你还需要做这些步骤:
转到右上方区域,点击SDK管理器图标。
选择Android SDK > image 1,你需要勾选你需要的所有Android版本*
勾选后单击“确定”,然后安装。
Android SDK > SDK Tool > right down side > show Package detail >
勾选30.0.2选项,然后安装。
Image 2 > select 30.0.2
5)现在完成点击确定安装>应用你的好去。
首先,我在Android Studio 4.2.2中遇到了这个问题,你不需要将SDK构建工具从31降级到30或更改编译SDK版本。
主要问题是SDK构建工具31中缺少两个文件:
dx.bat
dx.jar
解决方案是,这些文件在文件位置中命名为d8,因此将其名称更改为dx将解决这个错误。
步骤如下。
对于Windows
去地点
“C: \ \用户当地\ AppData \ \ Android用户\ Sdk \构建工具\ 31.0.0”
找到一个名为d8.bat的文件。这是一个Windows批处理文件。
重命名d8.bat为dx.bat。
在lib文件夹(“C:\Users\user\AppData\Local\Android\Sdk\build-tools\31.0.0\lib”)
将d8.jar重命名为dx.jar
记住AppData是一个隐藏文件夹。打开隐藏项以查看AppData文件夹。
适用于macOS或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
现在运行您的项目。
这个问题有多种解决方案,但有一个解决方案应该在逻辑上解决它,即卸载构建工具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版本开始,它对我有用。
我的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
我在这里回答了这个问题,但我将复制/粘贴答案,因为它是相关的:
正如在其他问题中指出的那样,问题是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安装。
针对android 12目标sdk API 31
compileSdkVersion 31
buildToolsVersion 31.1.0
Android gradle插件(AGP)应该有最低版本设置为
7.0.2 or above
Android gradle包装版本可以设置
gradle-7.2-bin.zip
通过上述配置,构建错误将得到解决,您无需将构建工具版本降级到30.0.2
此外,如果你面临和intellij注释相关的构建错误,在你的app/build中添加以下配置。gradle文件
configurations {
compile.exclude group: 'com.intellij', module: 'annotations'
implementation.exclude group: 'com.intellij', module:'annotations'
}
在许多博客中,你会发现解决方案是降级到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中构建您的项目,异常不应该再出现了!