因此,我们都混淆了我们的发布APK使用ProGuard,以使逆向工程我们宝贵的代码更难。但我开始怀疑,对于开源应用程序来说,这是否真的是必要的呢?
让我们以电报为例--他们的源代码可在GitHub上随时获得。,因此逆向工程保护在这种情况下是无关紧要的.
我的问题是:除了更困难的逆向工程之外,混淆还有其他好处吗?
编辑:这个问题是专门关于混淆的,而不是一般的ProGuard。
发布于 2016-09-08 15:53:49
如果您想为自己的代码提供一定程度的隐私,混淆是非常重要的。
假设您想出了一个非常好的库,它被许多渴望赚钱的潜在开发人员所梦寐以求。他们可以很容易地访问你的源代码(通过github或apk反编译),把它撕下来并在他们自己的应用程序上使用,你不会因此而得到任何荣誉。
Enter :软件许可通过指定软件许可证,您正在通知任何潜在的开发人员什么是do和do-不是属于您自己的知识产权。
如果你把你的代码保存在一个私密的事情上,这会让别人很难从它中获得合法的利润,但是要记住,有些人不会尊重这一点,并且会试图复制这些代码。这就是混淆的原因。
通过混淆您的代码,您将很难被其他人察觉/阅读,从而提供某种级别的保护。
在安卓系统中,标准混淆是通过使用Proguard (以及他们的专业产品和更好的产品,如DexGuard)来实现的。
请记住,护卫不仅是用于混淆的工具,而且也是用于:
代码收缩(减少应用程序不需要的代码和转储类的大小)
在收缩步骤中,ProGuard从这些种子开始,递归地确定使用了哪些类和类成员。所有其他类和类成员都会被丢弃。
码优化
在优化步骤中,ProGuard进一步优化了代码。在其他优化中,可以将非入口点的类和方法变为私有、静态或最终的,可以删除未使用的参数,并且可以内联某些方法。
混淆
在混淆步骤中,ProGuard重命名不是入口点的类和类成员。在整个过程中,保留入口点确保它们仍然可以被原始名称访问。 预验证步骤是唯一不需要知道入口点的步骤。
@非常重要的注意事项:混淆了您的代码并不能完全保护您免受盗窃或复制.
有了适当的工具和一点耐心,一个非常有经验的开发人员最终可能会打破混乱(这取决于他们需要多少代码)。
@结论
无论是小项目还是复杂项目,人们都应该始终使用ProGuard。在构建过程中删除了未使用的代码这一事实为apk提供了更少的所需空间和更好的性能(由于收缩过程,ProGuarded应用程序的大小减少了25% )。即使您的应用程序代码可以通过Github或其他存储库获得,您也应该保持ProGuard脚本的整洁和干净(即使在收缩过程中只删除了少数类)。
,但在回答您的主要问题时: --如果代码至少经过简单的优化并向每个人开放,则可以跳过混淆操作。
https://stackoverflow.com/questions/39393244
复制相似问题