【问题标题】:-libraryjars has no effect on resulting apk, proguard-libraryjars 对生成的 apk、proguard 没有影响
【发布时间】:2014-03-18 09:41:36
【问题描述】:

使用工具 dex2jar 和 Java Decompiler 我检查了两个版本的 apk 文件,该文件是在启用了 proguard 的 eclipse 中构建的。使用此命令制作了一个版本的 apk,作为 proguard-project.txt 文件的一部分

  -libraryjars /libs/GraphView-3.1.1.jar

在另一个版本的 apk 中,这一行被注释掉了

查看从 apk 转换为 jar 后生成的 apk 文件并查看它们。两个 apk 文件都被混淆了,但是它们完全相同。所以 -libraryjars 命令根本没有效果?为什么混淆后的代码在这两种情况下完全一样?

相比之下,我制作了带有其他修改的两个版本的 apk 文件,它们会产生不同的文件。例如,我将此行添加到 proguard-project.txt 文件中

  -keep class com.example.proguardwithgson.MainActivity$TestObject { *; }

它改变了apk的结果代码,TestObject内部类不再被混淆并且清晰可读。

如果 -keep 命令有效,那么为什么 -libraryjars 命令不执行任何操作?

【问题讨论】:

  • 您似乎期望使用 -libraryjars 会影响哪些类是否被混淆。这不是 -libraryjars 选项的用途,而是-keep 选项。选项 -libraryjars 仅有助于解析引用的类,而不是在混淆或字节码优化中包含或排除它们。
  • 你确定你今天关于这个主题的两个问题不是重复的吗?

标签: java android eclipse proguard


【解决方案1】:

Android 构建过程已经为您指定了所有必要的 -injars/-libraryjars/-outjars 选项。你永远不应该在你的配置文件中指定它们;你只会收到很多关于重复类的警告。

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

【讨论】:

    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多