Proguard 可以混淆 Android 库项目 (APKLIB) 吗?

Posted

技术标签:

【中文标题】Proguard 可以混淆 Android 库项目 (APKLIB) 吗?【英文标题】:Can an Android Library Project (APKLIB) be obfuscated by Proguard? 【发布时间】:2012-10-10 14:30:52 【问题描述】:

我正在尝试混淆一个 android 库项目 (APKLIB),允许将该库分发给潜在客户进行测试开发,而不会影响大部分源代码。

很遗憾,Google 无法提供任何文档和示例,对混淆的 APKLIB 的唯一引用是没有解决方案的问题帖子。

我尝试使用 android-maven-plugin 以及 maven-proguard-plugin 和 Maven 来混淆 APKLIB,但最终结果没有被混淆。我还尝试将 proguard 目标移至 maven 的 process-classes 和 prepare-package 阶段,但没有成功。

我最后的手段是将源代码从 APKLIB 中分离出来并将其混淆为 JAR,同时将 APKLIB 保留为依赖于混淆 JAR 的 AIDL 文件和资源。但是,如果可能的话,我想避免这种情况,因为我们的项目已经有大量的库。

有谁知道是否可以混淆 APKLIB?如果有,怎么做?

【问题讨论】:

您希望您的客户如何使用您的 apklib? APKLIB 是开发工具包的一部分,包含一系列 AIDL 文件和可打包类,允许第三方开发人员通过 IPC 与我们的远程服务进行交互。 【参考方案1】:

您好,您问的是创建一个混淆的 jar 文件吗?

您可以通过向其中添加 build.xml 文件并在您的 proguard-project.txt 文件中进行更改并从命令行运行“ant release”来做到这一点,您将在您的 proguard 文件夹下找到 obfuscated.jar项目的bin文件夹。

步骤;

-> 要在 linux 中的项目中添加 build.xml,请打开终端并转到 android/tools/ant 文件夹并运行 ./android update project -p /path of your android library project。您将在项目根目录中找到 build.xml。

-> 要在编辑器中的项目中启用混淆,请打开 project.properties 文件并从 proguard.config=$sdk.dir/tools/proguard/proguard-android.txt:proguard-project.txt 中删除注释

-> 将您的更改添加到 proguard-project.txt 文件并在终端中转到您的项目并运行 ant release

【讨论】:

如果您坚持传播相同答案的多个副本,请至少使用 formatted 版本:没有代码,因此无需使用代码标签在普通文本上。请务必阅读格式帮助(编辑时单击问号...)

以上是关于Proguard 可以混淆 Android 库项目 (APKLIB) 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Proguard 使用 DNSJava 库混淆 Android 代码

Android 库项目:混淆并保留资源

android库项目混淆

如何用 Eclipse 混淆 Android 库项目?

Android 库中的 Proguard

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