【问题标题】:-libraryjars, what is the purpose in proguard?-libraryjars,proguard 的目的是什么?
【发布时间】: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。
  • 谢谢你的解释,现在说得通了,更清楚了。
  • 你确定你今天关于这个主题的两个问题不是重复的吗?

标签: java android proguard


【解决方案1】:

您可以在 ProGuard 手册中找到有关其用途的说明 > Introduction

-injars/-libraryjars/-outjars 选项指定 ProGuard 的输入文件和输出文件。 Android 构建过程已经为您指定了必要的选项,因此您不能在配置文件中重复它们。

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2012-12-05
    • 1970-01-01
    • 2015-06-23
    相关资源
    最近更新 更多