使用 ProGuard 混淆 Android 库项目源代码

Posted

技术标签:

【中文标题】使用 ProGuard 混淆 Android 库项目源代码【英文标题】:Obfuscating Android Library Project source code with ProGuard 【发布时间】:2014-05-31 23:34:49 【问题描述】:

我正在使用 Eclipse 开发一个想要获得许可的 android 库项目。为了防止我的客户轻松地进行逆向工程和阅读我的代码,我想混淆我的库的源代码。根据我所做的研究,我发现 ProGuard 似乎被认为是最适合我的使用方法。

我从 Eric Lafortune(ProGuard 的创建者)那里看到了 post,它告诉我库项目不运行 ProGuard,这让我很困惑。为什么它适用于 Android 应用程序项目而不适用于 Android 库项目?也许我只是误读了一些东西......

我已经阅读了几篇关于如何创建 ProGuard 配置文件以及 Ant 构建配置的文章和博客(参见 this 一个)。但这肯定需要我几个小时才能让它工作,如果我设法让它工作的话......更不用说这些帖子和博客可能已经过时了。

所以,我想知道我想要的是否可行,以及我是否朝着正确的方向前进。

【问题讨论】:

【参考方案1】:

您可以混淆您的库,但您需要将所有公共 API 添加为例外,以便 Proguard 不会触及它。这是很多工作。准备好进行大量测试。

此外,如果您混淆了您的库,您通常也希望混淆它的依赖项,或者将这些依赖项添加到异常中。在前一种情况下,您的客户将无法在不升级整个库的情况下升级依赖项,在后一种情况下,整个混淆会更弱。

当然,即使您添加了所有内容,您也可能会遇到更多问题。

【讨论】:

以上是关于使用 ProGuard 混淆 Android 库项目源代码的主要内容,如果未能解决你的问题,请参考以下文章

Android ProGuard - 只有混淆

使用 proguard 的 Android 混淆应用程序会不断混淆库 jar - 是吗?

如何使用 proguard 混淆 android 库(.aar)?

Android 中的 ProGuard 不起作用。(不混淆)

Proguard 使用 DNSJava 库混淆 Android 代码

Android 项目的代码混淆,Android proguard 使用说明