使用Android库项目设置ProGuard

时间:2013-03-01 20:32:34

标签: android proguard

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

2 个答案:

答案 0 :(得分:17)

修改

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

  

图书馆项目本身不运行ProGuard,因此他们不使用   任何配置。

     

应用程序项目会混淆整个代码库,包括任何代码库   引用库,所以他们需要适当的配置   应用程序代码和库代码。


旧答案 (没错,可能不是最佳方法)

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

如果你想混淆那个罐子,请查看这篇文章:

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

答案 1 :(得分:9)

在库项目中指定库的proguard设置(比如哪些库文件不应被混淆)是有意义的。我发现我还需要在我的应用程序中包含我的库模块中的proguard配置。为此,我将以下内容添加到了我的库defaultConfig

中的build.gradle部分
apply plugin: 'com.android.library'

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

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

另见consumerProguardFiles gradle reference