我需要保护我的安卓应用程序不被复制吗?



我需要保护我的Android应用程序(从Google Play Store下载)不被复制吗?我正在点击一些链接,这些链接指向一些自相矛盾的东西。

如果我使用Google Play Developer Console帮助搜索"应用加密",它会显示"Google Play许可服务"网页,结尾是:

请注意,从JellyBean发布的Android操作系统开始,所有付费和免费的应用程序默认都是加密的,因此,是否需要任何额外的保护措施来防止未经授权的复制如Google Licensing Server.

'Filters on Google Play'显示:

Google Play不再支持复制保护功能开发者控制台…

并提供了"替换复制保护"的链接。这链接到"设置许可",这链接到"为您的应用添加许可",这链接到"市场许可支持常见问题",其中显示"Google Play许可服务"网页(上面的文字表明后jellybean应用是加密的)。所以,除非我误解了,否则这似乎是自相矛盾的。

根据其他关于这个话题的帖子的日期判断,我猜我必须使用Google Market Licensing LVL(许可证验证库)来做我自己的应用程序保护。然而,有迹象表明这不是当前的最佳解决方案(例如,Market Licensing示例应用似乎过时了,最近论坛上很少有关于使用它的帖子,我也找不到关于使用它的udacity.com类)。所以我想先得到一个明确的答案会有所帮助。

首先,100%保护代码是不可能的。但是你可以让黑客的工作变得足够艰难。有一些技术可以保护你的代码保护android应用程序。我建议你看看proguard工具。

ProGuard是一个免费的Java类文件收缩器、优化器、混淆器和预校验器。它检测并删除未使用的类、字段、方法和属性。它优化字节码并删除未使用的指令。它使用无意义的简短名称重命名其余的类、字段和方法。由此产生的应用程序和库更小、更快,并且对逆向工程的抵抗力更强。

考虑了对这篇文章的反馈(谢谢),我相信答案是"不",我不需要保护我的应用不被复制,因为值得怀疑的好处并不能证明我的努力是合理的(理由如下)。然而,这个答案是基于我目前正在开发的应用程序,并不适用于所有。

应用程序不依赖于服务器组件,因此将独立运行。也就是说,如果有人得到它的盗版,他们将能够运行它。不过,这款应用的价格很低。因此,如果有人复制并开始非法销售,他们就需要大量销售才能赚钱,并证明他们的努力和所承担的风险是合理的。他们也可能会选择赠送盗版应用,但我猜大多数盗版版本的用户一开始就不会花钱。

如果我整合Google Market Licensing LVL,这将使盗版应用变得困难。然而,通过足够的努力,它可以反向工程到源代码(即使我使用Proguard), LVL功能可以被消除,并重建应用。此外,关卡整合也是一项重要的工作(至少对我来说),它可能会给应用带来漏洞,我不确定这是否是一个好的解决方案(Market Licensing示例应用似乎过时了,最近论坛上很少有关于使用它的帖子……)。因此,我认为付出的努力和冒的风险是不值得的。

如果应用程序的售价很高,我的答案可能会有所不同,我会考虑其他选择。例如,可以整合Google Market Licensing LVL,但这并不能完全消除盗版风险,除非Android提供安全的应用加密。对我来说,应用加密似乎是一个巨大的挑战(游戏邦注:例如,它需要在某些时候被解密才能运行),这也许可以解释为什么后jellybean应用加密被删除了(如果它被删除了)。我也可以将功能转移到服务器端——这对我来说似乎是最安全的策略,尽管它的开发成本很高,并且需要管理和维护服务器端。

很可能有我没有考虑到的方面。如果你不同意我的回答,或者有其他想法,请评论。

如果你的APP提供一种服务,在线游戏(需要服务器),你可以通过一些注册/授权规则来保护你的服务。

或者,如果你的应用是一个工具,一个独立的游戏,实际上很难保护。有一些网站提供的服务,允许用户直接从GooglePlay下载APK文件,而无需任何购买......任何人都可以通过允许从非googleplay源安装应用程序来安装这些APK。在这种情况下,你确实需要一些方法来保护你的应用程序不被复制。

最新更新