我开发了一个Android库,由我开发的测试应用程序使用。
我需要对Android库的代码进行模糊处理,以便能够将其提供给某些客户端,而无需查看过多的代码。 但是我需要有一个Android库,其结构与我的非混淆库相同,所以我仍然可以用Eclipse打开它并在其他应用程序中使用它。
我已经尝试用Gradle和Proguard来做,但我在那里度过了难关。
首先,我使用了插件:" android-library"建立我的apklib,但我不能很好地理解在build文件夹下创建的文件夹的结构。
哪个文件夹应该包含带有模糊类的新Android库项目? 我是以正确的方式做的吗?
此外,我很难过,因为许多原始课程似乎都没有生成,并且在我完成构建后遗失了,但我无法弄清楚原因,有什么可能的原因?
是否可能是因为使用了一些弃用的方法,或类似的东西?
我的最后一个问题是关于在构建期间导入Library的正确方法,我的Android库正在使用一些外部jar工作,但如果我在构建期间检查输出,我可以看到我似乎失去了大部分原始的库类:
16:36:33.809 [INFO] [system.out]图书馆类的原始数量:5366 16:36:33.809 [INFO] [system.out]库类的最终数量:615
可能导致什么? 我知道我的问题很模糊,但我一直在努力争取一天,并且现在无法真正改善我的构建。 任何有关如何正确构建与Gradle和Proguard混淆的Android库的帮助或建议将不胜感激。
编辑:
我发现了一些相关的帖子,但Gradle Using Proguard生成的输出并不是很清楚。看来,参与输出是lib文件夹下的.aar文件,但这并不是我想要的。 到目前为止,我在Proguard设置文件中使用了一些特殊规则,以强制我的一些文件与-keep规则保持一致(但我无法理解为什么他们不能保留和如果我不遵守这些规则,就会混淆。然后我使用了bundle / release文件夹中生成的classes.jar,并将其移动到新的Android Library Project libs文件夹中,从我原来的Android Library Project复制资源。让我成为一个带有混淆源的Android库项目,但看起来并不是很干净。
答案 0 :(得分:1)
首先你无法在eclipse中打开你的混淆代码。因为混淆过程不会生成你想在eclipse中打开的项目结构.Obfuscation是一个保护二进制分布式代码而不是源代码的过程请保持清醒 在你的脑海里。
我认为你需要做你的android库项目的二进制分发。对于android库项目的二进制分发使用的扩展是AAR FORMAT
中提到的aar这意味着您需要查找在build文件夹下生成的yourlibrary.aar文件。对于android库项目,不要混淆你的代码。由于您的客户很难使用库。
您将在build / outputs / aar文件夹中获取.aar文件。
我认为这足以继续下去。