如何以独立于操作系统的方式在Proguard配置中包含rt.jar / classes.jar?

时间:2013-09-27 13:51:43

标签: java android proguard

如Proguard的troubleshooting page

所述
  

在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中配置它,无论它运行什么操作系统都可以工作,而不需要代码的用户make filesystem changes

1 个答案:

答案 0 :(得分:0)

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

-libraryjars <runtime.jar>

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

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

如果您看到有关缺少java运行时类的警告,则应考虑使用-dontwarn javax.**之类的选项。请参阅ProGuard手册&gt;疑难解答&gt; Warning: can't find referenced class