34

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

4

2 回答 2

19

编辑

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

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

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


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

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

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

如何在 Eclipse 中使用 Proguard 混淆 Android 库(.jar 文件)

于 2013-03-01T21:07:36.127 回答
19

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

apply plugin: 'com.android.library'

android {
    defaultConfig {
        consumerProguardFiles 'proguard-rules.pro'
    }
}

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

另请参阅consumerProguardFilesgradle 参考

于 2017-06-07T14:59:34.510 回答