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或以上,这个我没试过,因为老项目,这种东西瞎搞不得

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值