Android SDK升级到31的坑(Installed Build Tools revision 31.0.0 is corrupted)

最近我们团队的项目的SDK升级到了31,然后我就在不知情的情况下git pull 了最新的代码

首次运行

拉下最新的代码之后点击运行,结果报错如下:
在这里插入图片描述
哦豁,提示31.0.0有损,好家伙,这玩意从来没动过还能损坏,emm。。。可能是网络问题导致下载损坏的,那就把31.0.0卸了重装,结果还是一样的错;那就排除文件有损的问题了
然后再往上找到了stackoverflow的这篇文章,看不懂英文?不要紧,还有中文的这篇
意思就是31.0.0的build工具缺少dx这个工具,有三种解决方式:

  • 将SDK版本降到30或以下
  • build tools/30.0.0中的dx工具复制过来
    1. 进入Android SDK目录下的build tools目录下
    2. 30.0.0/dx.bat拷到31.0.0/下(Mac或Linux是dx
    3. 30.0.0/lib/dx.jar拷到31.0.0/lib/
  • build tools/31.0.0中的d8直接复制为dx
    1. 进入Android SDK目录下的build tools目录下
    2. 31.0.0/d8.bat复制一份,然后改名为dx.bat(Mac或Linux是d8 -> dx
    3. 31.0.0/lib/d8.jar复制一份,然后改名为dx.jar

问我d8、dx是干嘛的?看看这篇文章,我自己的

再次运行

不出意外,报了个新错:
在这里插入图片描述
这可如何是好,完全没头绪啊,百度也搜不出来,但是无意中看到一篇文章下的评论说将AS的JDK版本改成java11,就抱着试试的心态
Mac:Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JDK改为java11
Windows:Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JDK改为java11
在这里插入图片描述
然后编译,结果就编译过了,你说神奇不神奇。
你说这Android啊,不让你用Java8以上的语法,还这么多事儿,事儿精!!!

总结

第一种方法

targetSdk、compileSdk降级到30或以下

第二种方法

如果实在没办法降级,那就想办法把dx工具整出来,拷贝低版本,重命名d8都行
然后将AS的JDK版本提升到Java11

其他办法

其实应该还有第三种解决办法,也是google提倡的,将Gradle版本升级到7.0或以上,这个我没试过,因为老项目,这种东西瞎搞不得


文章标签:

原文连接:https://blog.csdn.net/sese12138/article/details/123902190

相关推荐

【论文阅读|深读】RDAA:Role Discovery-Guided Network Embedding Based on Autoencoder and A

ivx杨帆启航React/Pixi.js/FaaS、Krpano及微服务架构

支持SwiftUI!Swift版图片&视频浏览器-JFHeroBrowser上线啦

vivo官网APP全机型UI适配方案

《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(7)-Fiddler状态面板-QuickExec命令行

SwiftUI 布局 —— 尺寸( 下 )

SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?

从SwiftUI的@State来看看Property Wrapper

七夕快到了,用SwiftUI做一个表达爱意的心形动画

RK3568开发笔记(四):在虚拟机上使用SDK编译制作uboot、kernel和buildroot镜像

【论文阅读|深读】GAS:Role-Oriented Graph Auto-encoder Guided by Structural Information

8个SwiftUI的小技巧让隔壁同事两眼放光,直呼太卷了

【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

Phabricator Conduit API介绍

利用 UIScrollView 实现六棱柱图片浏览效果

【antd】5分钟快速完成antd样式的按需引入以及自定义主题

对话Robin Marx:HTTP\u002F3和QUIC将带来重大机遇和挑战

一种新的UI测试方法:视觉感知测试

【云原生 | 15】Docker commit与Docker build比较

VBA驱动SAP GUI完成界面元素值初始化