【发布时间】:2014-03-18 08:18:39
【问题描述】:
-libraryjars <java.home>/lib/rt.jar
在 proguard 的文档中,它说您将 -libraryjars 用于添加到项目中的 jar 文件。我已经在 libs 文件夹中添加了库 jar,并且从未使用过它。 jar 中的文件总是与其余代码混淆。永远不必为股票设置更改任何 proguard 设置。
我曾经需要做的唯一更改是从 proguard 修改中删除一些类以避免错误。这些与序列化或 GSON 库中的其他问题有关。
这里有一些示例说明如何使用 -keep 命令从混淆过程中删除类
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keep class com.myproject.testproject.MainActivity$TestObject { *; }
相比之下,我不明白示例代码中 -libraryjars 行的用途。即使不使用这一行,Android 项目的 libs 文件夹中添加的所有 jar 也会被混淆,没有任何问题。
有什么用?
【问题讨论】:
-
有两种不同类型的库。 1) 您的应用程序需要运行并且您希望与您的应用程序“捆绑”和混淆的库。 2)您的应用程序运行所需的库,您没有混淆和“捆绑”。
-libraryjars处理第二种情况。始终需要使用-libraryjars包含 java 运行时的路径,因为运行代码始终需要这样做。其他库可能存在许可限制,这意味着您不能捆绑和混淆它们,或者可能由框架在运行时提供 - 例如 servlet API。 -
谢谢你的解释,现在说得通了,更清楚了。
-
你确定你今天关于这个主题的两个问题不是重复的吗?