1

如 Proguard 的故障排除页面所述:

在 MacOS X 中,运行时类可能位于与大多数其他平台不同的位置。然后,您必须调整配置,将路径替换<java.home>/lib/rt.jar<java.home>/../Classes/classes.jar.

因此,例如,在非 Mac 环境中,您的 Proguard 配置中可能包含以下内容:

-libraryjars <java.home>/lib/rt.jar

但对于 Mac 环境,您将指向classes.jar.


如果这只是在 Mac 上开发,这很好,但如果此代码被检入版本控制并由多个操作系统上的开发人员共享,并且也在运行不同操作系统的构建服务器上,它需要更加灵活。

有没有办法在 Proguard 中配置它,无论它在什么操作系统上运行,都不需要代码用户进行文件系统更改

4

1 回答 1

0

您可以定义一个取决于环境的系统变量并使用它:

-libraryjars <runtime.jar>

但是,如果您正在为 Android 开发:

  • 您不应该引用rt.jaror classes.jar,因为它们包含许多在 Android 运行时中不存在的 java 运行时类。
  • 您不应该指定-libraryjars,因为 Ant/Eclipse/Gradle 构建过程已经自动为您指定了所有必要-injars-outjars、 和-libraryjars

如果您看到有关缺少 java 运行时类的警告,您应该考虑使用类似-dontwarn javax.**. 请参阅 ProGuard 手册 > 故障排除 >警告:找不到引用的类

于 2013-10-02T00:38:25.680 回答