如 Proguard 的 troubleshooting page 中所述:
In MacOS X, the run-time classes may be in a different place than on most other platforms. You'll then have to adapt your configuration, replacing the path
<java.home>/lib/rt.jar
by<java.home>/../Classes/classes.jar
.
例如,在非 Mac 环境中,您的 Proguard 配置中可能有以下内容:
-libraryjars <java.home>/lib/rt.jar
但对于 Mac 环境,您将指向 classes.jar
.
如果仅在 Mac 上开发,这很好,但如果将此代码 checkin 版本控制并由多个操作系统以及运行不同操作系统的构建服务器上的开发人员共享,则它需要更加灵活。
有没有一种方法可以在 Proguard 中配置它,使其无论运行在什么操作系统上都可以工作,而不需要代码的用户 make filesystem changes ?
最佳答案
您可以定义一个取决于环境的系统变量并使用它:
-libraryjars <runtime.jar>
但是,如果您正在针对 Android 进行开发:
- 您不应引用
rt.jar
或classes.jar
,因为它们包含许多 Android 运行时中不存在的 Java 运行时类。 - 您不应指定
-libraryjars
,因为 Ant/Eclipse/Gradle 构建过程已自动指定所有必需的-injars
、-outjars
,以及-libraryjars
为您服务。
如果您看到有关缺少 Java 运行时类的警告,则应考虑使用 -dontwarn javax.**
等选项。请参阅 ProGuard 手册 > 故障排除 > Warning: can't find referenced class .
关于java - 如何以独立于操作系统的方式将 rt.jar/classes.jar 包含在 Proguard 配置中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19052548/