使用Google的许可验证服务以防非法拷贝

作者在“”一文中谈到了 Google 为什么要发展 Android 和其它个人和公司为何要加入 Android 这个生态系统的一些个人观点 ——

围绕 Android 的将是一个日益壮大的生态系统,它的开放性,选择的多样性,对创新的鼓励和回报能够使得它不断成长,并成为IT产业在智能设备和移动互联网的发展上的一个最重要的力量。

但是在作者的另外一篇文章“”中也谈到当前在 Android 生态系统中,获得{zd0}收益的还是设备供应商,或者电信运营商,而作为在这个系统中扮演最重要角色的开发社区,它们所能得到的回报还是十分可怜,而 Google 为开发者提供的许可验证服务将有助于改善这一点。

下面的部分是对官方的技术文档“”一些重要内容的摘要,希望有助于已经或者正在开发 Android 收费应用的开发者更清晰了解该服务并使用它来为自己的应用提供防拷贝保护。

  • 要使用该许可认证服务,你必须是菜市场的注册开发者,而且你的收费应用也必须通过菜市场提供。(呵,这也是 Google 打击其它各式各样的山寨安卓市场的重要手段啊,一旦它们无法提供xx的收费应用,并因为缺少像 Google 这样的防拷贝机制,也很难吸引到收费应用的开发者进驻,只能提供一些简单的免费应用的话,对用户的吸引力自然大大减少)。
  • 并且运行的设备上必须安装了 Market App,因为3rd App 不能直接跟 Google 的验证服务器通信,而必须通过 Market App 进行。当然,要从菜市场购买 Apps,Market App 本来就是必不可少的。Maket App 会自动获取你的 App 的 ID 和当前用户的帐号数据并把它们打包传送到服务器上进行验证。并把验证的结果返回给你的 App。此外对 Android OS 的版本要求是1.5以上。除了以上两点,任意类型的 App 可以在任意设备上使用该服务。
  • Google 提供了 LVL (License Verify Library 许可验证库)来帮助你处理如何向 Market App 发起许可验证的请求,并把服务器回应的数据通过你注册的回调函数返回给你的 Activity。(LVL 可以通过 Android SDK and AVD Manager 下载)
  • Google 的许可验证服务器返回的验证结果是加密的,以防止第三方伪造验证结果。加密所用的公钥可以在你的注册开发者帐号管理里面申请。你需要把申请的公钥传给 LVL 相应的接口,LVL 会自动使用该公钥去解密验证结果,并把结果的明文返回给你的 Activity。
  • 验证失败的情况下要如何处理,施加那些约束或者是否直接退出由开发者自行决定。你可以根据应用的类型,面向的用户等来决定。
  • LVL 提供了 Policy 接口和内置的 ServerManagedPolicy 实现(Google 强烈推荐使用该内置实现)来帮助处理无法联网验证失败下的状况。ServerManagedPolicy 会缓存验证结果到本地文件,并设置一定的有效期限,这样就可以避免每次查询都需要链接服务器。

  • ...
    // Construct the LicenseChecker with a Policy.
    mChecker = new LicenseChecker(
    this, new ServerManagedPolicy(this,
    new AESObfuscator(SALT, getPackageName(), deviceId)),
    BASE64_PUBLIC_KEY // Your public licensing key.
    );
    ...

  • 被缓存到本地的验证结果可以通过LVL提供的一个Obfuscator 接口进行混淆加密,LVL 内置提供了一个 AESObfuscator 实现,AES公钥可以通过预设的种子,应用 ID和设备ID产生,要xx缓存的验证结果也将会非常困难。
  • Google 建议你对你的收费应用程序也使用混淆器如 做代码混淆,避免被人直接xx程序(比如修改验证的代码)。
  • Google 提供了完善的测试环境,允许你事先测试验证成功,验证失败等各种状况。
  • 如果已经使用了该许可验证服务,在发布应用时,就不要再设置防拷贝选项(In the Publishing options section, make sure that the Copy Protection radio button selection is “Off”)。
  • 完整的信息,请参考官方技术文档“”一文。

    欢迎留言交流您对该服务的想法和具体实作时的心得 ^_^

    Via

    相关:改善开发者在 Android 生态系统中的商业前景,Google 提供授权认证服务

    虽然 Android 平台发展势头非常迅猛,照目前的趋势看 Android 设备总量超过 iOS 设备总量应该是迟早的事情。但是以目前的形式来看,在 Android 生态系统里面获得{zd0}利益的还是设备制造商(如 Moto,HTC),或者还有电信运营商,甚至是软件硬件整合方案供应商,而开发者,无论是个人,小团队,ISV,要从中获得收益还是倍感艰辛。

    虽然 Android Market 未来的主要商业模式可能会更接近于目前的PC桌面软件,而区别于 App Store 目前的方式,但是我想那应该是在 Android 设备量取得类似 PC vs Mac 地位之后的事情。而目前要想真正赶上甚至超过(不仅仅是设备量上的超出)有3大 Store 和xx支持多种商业模式的 iOS(收费应用,收费内容和免费广告)加持的 Apple,持续改善开发者在 Android 生态系统里面的商业前景,是 Google 的当务之急。

    老实说,Google 在为开发者提供更好的商业环境上做的的确差强人意,也导致了目前 Android Market 上 Apps 的数量虽然庞大,但是良莠不齐,真正的精品并不多的现状。设备兼容性问题,购买支付困难,xx泛滥,Market App 本身常常被设备制造商人为取代和屏蔽等等都急需 Google 去一一解决。

    而针对上述的问题,Google 迈出的{dy}步,是为开发者提供授权认证服务,这应该有助于缓解目前最困扰开发者的主要问题——“xx泛滥”。

    上图是授权认证服务的运作方式的示意图,3rd App 可以在应用内部调用 Google 提供的 LVL(认证验证库),LVL 运行于 3rd App 的进程中,它会负责跟本地 Market App 进行 IPC(进程间通信),而 Market App 负责跟远端的 Market License Server 做网络通信,查询认证信息,然后返回给 LVL,{zh1} 3rd App 里的 Activity 可以获得认证验证的结果并自行决定应对措施,比如验证不通过则限制功能,限制使用时间,显示广告,直接退出等等。

    目前的信息表示,Google 其实早有计划,用户通过 Android Market 购买 App 的购买记录信息从一开始就被完善的保存下来,并且 Android 1.5 以上版本附带的 Market App 就已经集成了该认证验证功能,只是到它认为时机成熟后才公开出来。这种方式不可避免会碰到如何处理无法联网下认证失败的问题,本地缓存认证验证状况,设置 一次验证成功的有效期限,避免每次都需要远程查询,并且允许一定的失败容忍次数可能是一种比较可行的解决方案,可能由 3rd App 自己提供,或者 Google 的 LVL 提供相应的支持。

    在国内,这种方式还会碰到另外的问题,像行货的 Android 手机大多移除甚至强制屏蔽了 Market App,并且国内用户对网络流量非常的敏感。当然,实际来说,Android Market 的收费市场也没有向国内开放,即使是国内的开发者,大多在开发收费应用时也不会主要针对国内市场。

    从作者个人之前在魅族M8手机上开发收费应用的经历来看,魅族的 MStore 的授权认证方式更适合国内的状况,MStore 提供的认证方式是用户在购买和下载收费应用时,服务器会自动生成一个跟机器序列号和收费应用的MD5值绑定的认证文件跟随 App 一起下载到用户的手机里面,而收费应用可以通过魅族提供的一个验证库去验证是否有合法的认证文件。当然这种方式{zd0}的问题是一旦生成认证文件的加密算法被 xx,就等于xx了所有的收费应用,对于 Google 来说,这样方式当然不可取,在线认证还是xxx有效的方式,虽然这种方式对用户来说多少有些麻烦。

    PS:
    从作者看到的外国网站对该消息的评论,这项服务自然得到开发者的普遍赞许,但是也有不少来自终端用户的反对意见,例如:

    1,以后要用 Pirated Paid App 就困难了-_-
    2,不联网情况下如何解决认证问题(正文中给出了一种可能的解决方案)
    3,3rd App 会不会侵犯用户隐私(如正文所述,认证的过程是由 Google 的 Market App 来完成,3rd App 仅仅是向 Market App 发送认证请求,甚至请求的部分还是通过 Google 提供的 LVL 来进行,所有 3rd App 根本不会直接去访问用户的信息)
    4,一旦开发者没有了被xx的压力,App 的价格会不会大幅度提升

    文章转载自:谷安——谷奥Android专题站 []



    郑重声明:资讯 【使用Google的许可验证服务以防非法拷贝】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
    —— 相关资讯 ——