将带有 proguard 的 Android 项目迁移到 R8,缺少 rt.java 文件,Android Studio 4.2

问题描述

我将我的 Android Studio 版本从 4.1 更新到 4.2 并且项目没有编译,因为 Proguard 版本非常旧 (4.7) 并且它与 Java 10 不兼容,但是我决定将我的项目从 proguard 迁移到 R8,但由于此错误,项目未编译:

File not found: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/lib/rt.jar

然后我将 R8 设置为 false 并使用 Proguard 将此行添加到我的 build.gradle 中,以便将我的 Proguard 更新到更高版本:

classpath 'net.sf.proguard:proguard-gradle:6.1.1'

但是,我还是遇到了同样的错误,而不是第一个告诉我更新新版本 Proguard 的错误

那么我该如何修复那个 rt.jar?也许某个 AS 版本和另一个版本的目录发生了变化?,如果我将我的 android studio 降级到 4.1 并恢复我所做的所有更改,该项目运行良好,但我想升级 Android Studio

解决方法

从 JDK 9 开始,rt.jar 不再是 JDK 的一部分,有关详细信息,请参阅 Removed rt.jar and tools.jar in JDK 9

在大多数情况下,如果在 JDK 8 中的 rt.jar 应该可以工作之前编译需要 rt.jar

但是,在 Android 项目中使用 rt.jar 的原因是什么?通常,缩小时由 Android Studio/AGP 提供的 android.jar 应该可以工作。