【问题标题】:Setting up ProGuard with Android Library Projects使用 Android 库项目设置 ProGuard
【发布时间】:2013-02-16 11:09:06
【问题描述】:

我正在尝试为我的 Android 项目设置 proguard。我的应用程序项目中的代码很少,但引用了一个包含绝大多数代码和任何其他外部 jar 的库项目。话虽如此,我不确定如何设置 proguard 以考虑到这一点。现在我的 proguard 配置文件只是来自the ProGuard site 的 Android 示例。我一直在四处寻找,但没有找到很多或任何关于在库项目中使用 proguard 的文档,只是 jars。我是proguard的新手,所以任何朝着正确方向的推动都会很棒。谢谢。

【问题讨论】:

    标签: android proguard


    【解决方案1】:

    编辑

    正如@BornToCode 指出的那样,一个不同的答案(最初发布在here)更好地解释了Proguard 如何处理库项目。此外,这个引用的问题比我原来的回答中链接的问题更有趣,整体声誉也更高。 引用:

    库项目本身不运行 ProGuard,因此它们不使用 任何配置。

    应用程序项目混淆了整个代码库,包括任何 引用的库,因此它们需要适当的配置 应用程序代码和库代码。


    旧答案 (没有错,只是可能不是最好的方法)

    库项目更像是一种在 Eclipse 中将项目链接到其 jar 的便捷方式。构建项目时,库项目中唯一对编译器可见的组件是 jar 文件。

    如果您想混淆该 jar,请查看此帖子:

    How to obfuscate an Android library (.jar file) using Proguard in Eclipse

    【讨论】:

    • 嗨,这个答案似乎与this 不同。你能解释一下吗?
    • @BornToCode 你是绝对正确的。链接的响应显然比我的回答更有信誉。我在此处的回答中添加了此链接和引用。
    【解决方案2】:

    在库项目中为库指定 proguard 设置(例如不应混淆哪些库文件)对我来说很有意义。我发现我还需要在我的应用程序中包含来自我的库模块的 proguard 配置。为此,我将以下内容添加到我图书馆的 build.gradle 中的 defaultConfig 部分

    apply plugin: 'com.android.library'
    
    android {
        defaultConfig {
            consumerProguardFiles 'proguard-rules.pro'
        }
    }
    

    然后在我的库模块中配置 proguard-rules.pro 文件以保留重要序列化类的名称。

    另见consumerProguardFiles gradle reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 2021-12-29
      • 1970-01-01
      相关资源
      最近更新 更多