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

dic*_*nus 8 android jar proguard android-studio android-r8

我将 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 版本和另一个 AS 版本之间的某些目录发生了变化?,如果我将 android studio 降级到 4.1 并恢复我所做的所有更改,该项目工作正常,但我想升级 Android Studio。

sgj*_*sse 4

从 JDK 9 开始,rt.jar不再有 JDK 的一部分,有关详细信息,请参阅在 JDK 9 中删除 rt.jar 和 tools.jar 。

在大多数情况下,如果rt.jar需要先进行编译,然后rt.jarJDK 8 才能工作。

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

  • 是的,删除 `-libraryjars <java.home>/lib/rt.jar` 应该是正确的方法。AGP 将隐式添加编译 SDK 的“android.jar”作为库路径。 (5认同)
  • 要做的第一件事是找到对“rt.jar”的引用在您的配置中的位置。通常,AS 项目不会引用“rt.jar”,因此它必须以某种方式添加到项目配置中。 (2认同)