2012-05-03 48 views
1

我有一个关于如何混淆Android库项目的问题。总的来说,我想混淆包含.java文件(在Android src /目录中)和XML文件/外部资源(在Android res /目录中)的apklib文件(或者任何库项目的.java文件) )。我希望能够将这个库分发给其他开发人员,类似于Facebook SDK库(https://github.com/facebook/facebook-android-sdk以供参考)。但是,我希望代码被模糊处理,以便我的方法不会以易于阅读的方式公开。混淆Android库项目/ apklib

我试过使用Proguard和Maven,但即使在使用Proguard构建我的项目之后,我的.apklib中的文件未被混淆。我也尝试手动运行Proguard,但我无法输出原始.java文件(可以将其他项目作为库引用)而不是.class文件。

如果任何人有任何关于如何混淆apklib/Android库中的Java代码的信息,我将非常感激。此外,它也将是非常有用的知道,如果根本不可能创建一个混淆的andoroid库。

非常感谢您的帮助。

最佳, 凯文

回答

0

取决于你如何设置Android行家的插件,您可以最有可能创建一个模糊的apklib ProGuard的目标。然而,我却没有尝试过自己。请记住,proguard可能会混淆为辅助工件,而不是主要的apklib。

你还应该记住,如果你混淆了库,你的用户将不得不使用混淆的方法名......这种方式打破了分发的目的,并且会使它非常难以使用,所以它可能是一个坏主意。这将工作的唯一的事情是,如果你混淆所有的代码而不混淆任何公共方法和类名称。

+0

Manfred - 非常感谢。我的Proguard配置的确保留了公共方法,这样开发人员就不需要像调用混淆方法那样做任何疯狂事情。我会研究Proguard是否会混淆为次要工件 - 这与我所看到的一致,但我不确定如何将代码重新合并到可导入的库中。 – Kevin

+0

您可以使用构建助手插件将库部署为辅助构件..并且只能使用该构件。用分类器.. –