如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?
答案 0 :(得分:0)
您可以定义一个取决于环境的系统变量并使用它:
-libraryjars <runtime.jar>
但是,如果您正在为Android开发:
rt.jar
或classes.jar
,因为它们包含许多Android运行时中不存在的Java运行时类。-libraryjars
,因为Ant / Eclipse / Gradle构建过程已经为您自动指定了所有必需的-injars
,-outjars
和-libraryjars
。如果您看到有关缺少java运行时类的警告,则应考虑使用-dontwarn javax.**
之类的选项。请参阅ProGuard手册&gt;疑难解答&gt; Warning: can't find referenced class