当前位置:文档之家› 【Android开发API】Google提供的服务:设置许可机制 - Setting Up for Licensing

【Android开发API】Google提供的服务:设置许可机制 - Setting Up for Licensing

<

p>原文链接:https://www.doczj.com/doc/d8579116.html,/guide/google/play/licensing/setting-up.html

编辑者:eoe耗?

更新时间: 2012.08.06

为应用程序添加许可证之前,需要建立Google Play的发布帐号,开发环境以及用来验证安装的测试帐号。

建立发布者帐户

如果您还没有Google Play的发布者帐户,那么就需要使用Google帐户去注册?个,并同意Google Play发布者网站的服务条款: :https://www.doczj.com/doc/d8579116.html,/apps/publish更多信息,请参考开始发布

如果您已经有Google Play的发布者帐户,那么就可以使用现有的帐户来建立许可证。

拥有了Google Play的发布者帐号,您就可以: * 获取许可证的公开密钥 * 在发布应用程序之前,测试应用程序是否完成了许可证的安装 * 发布添加了许可证支持的应用程序

许可证的管理设置

在发布者网站上,用户可以管理多个Google Play的许可证。管理操作可以在Licensing面板、Edit Profile页上进行,如下图1所示。该管理功能可以实现: * 建立多个测试帐号,每个帐号由不同的邮件地址注册。许可证服务器允许用户在模拟器或真机上登录测试帐号,发送许可证认证,接受静态测试反馈。 * 获得对应帐户许可证的公开密钥。当用户需要在应用程序中安装许可证的时候,就必须将该公开密钥拷到应用程序中。 * 用户使用发布者帐号或测试帐号登录,上传应用程序到发布者帐户,当服务器接收到该应用程序的许可证认证请求时,用户可以配置服务器发送的静态测试反馈信息。

文件:licensing_public_key.png

图1. Licensing面板、Edit Profile页中用户的许可证管理设置

更多关于如何使用测试帐号,以及静态测试反馈的信息,请参考下面的建立测试环境

建立开发环境

为许可证建立开发环境包括以下?个操作:

1. 为开发建立运行时环境

2. 下载LVL到SDK

3. 建立许可证验证库

4. 在应用程序中导?LVL库?程

下面具体介绍了这些操作,当建立完成之后,就可以将许可证添加到应用程序

首先,需要建立?个合适的运行时环境,可以运行、调试、测试应用程序许可证认证和执行。

建立运行时环境

正如前文所述,应用程序许可证认证不是直接与许可证服务器连接,而是通过绑定Google Play程序提供的服务,然后初始化?个许可证认证的请求。然后,Google Play服务就会与许可证服务器进行直接的交互,最终将结果反馈到用户的应用程序中。要调试、测试应用程序的许可证,需要建立?个运行时环境,包括必要的Google Play服务,这样应用程序才能给许可证服务器发送认证请求。

可用的运行时环境有两种: * 安装Google Play应用程序的android设备 * 运行Google API附加组件,API level 8(第?版)或更高的android模拟器

在真机中运行

使用android真机测试许可证,需要设备满足以下条件: * 运行android1.5以上(API level 3以上)的兼容版本 * 运行安装Google Play客户端程序的系统映像如果系统映像中没有安装Google Play,那么应用程序将无法与许可证服务器交互。关于如何建立开发android应用程序的设备的通用信息,请参考使用硬件设备

在模拟器中运行

如果用户没有android的真机,可以使用模拟器进行测试。

因为androidSDK提供的平台不包含Google Play,所以用户需要从SDK库中下载Google API附加组件平台(API level 8 以上)。下载完成之后,需要使用该系统映像创建?个虚拟机。

Google API附加组件不包含完整的Google Play客户端。但是,包含了以下内容:

* Google Play后台服务,可以实现ILicensingService远程接?,从而允许应用程序通过网络向许可证服务器发送许可证认证请求。 * ?组基本的帐户服务,使用户可以在虚拟机种添加Google帐户,并使用发布者帐号或测试帐号登陆。发布者帐号或测试帐号登陆,可以让用户在不发布程序的情况下进行测试。更多信息,请参考下面的授权帐号登陆

通过SDK管理器可以或许多个版本的Google API附加组件,但是只有android2.2以上的版本包含必要的Google Play服务。

要建立?个测试添加许可证程序的模拟器,遵守以下步骤:

1. 运行SDK管理器(在eclipse的Window菜单中或执行/tools/android sdk)

2. 选择并下载需要的Google API(必须是android2.2以上)

3. 下载完成之后,打开虚拟机管理器(在eclipse的Window菜单中或执行/tools/android avd)

4. 点击New并设置新虚拟机的具体参数。

5. 在弹出的对话框中,给虚拟机取?个有描述意义的名字,在目标菜单中选择对应的Google API,作为运行新虚拟机的系统映像。根据需要配置其它参数,然后点击 Create AVD ,完成虚拟机的创建。SDK?具创建了新的虚拟机配置后,将会在可用的android虚拟机列表中显示出来。

如果您对android虚拟机及其使用还不熟悉,请参考管理虚拟机

更新项目配置

建立了上述要求的运行时环境以后(真机或模拟器),确保更新过应用程序?程或按需要创建了脚本,这样编译后的包含许可证的.apk文件才算配置到环境中了。尤其如果在eclipse中配置,确保为运行/调试配置了合适的设备或模拟器。

如果?程是在android 1.5(API level 3)以上编译的,那么应用程序的编译配置不需要改变。例如:

库?程LVL 是android 的库?程,意味着可以在多个应用程序中使用LVL 的代码和

资源。

如果您对库?程及其使用还不熟悉,请参考[管理?

程](https://www.doczj.com/doc/d8579116.html,/tools/projects/index.html#LibraryProjects)* 如果应用程序时在android 1.5以上编译的,那么不需要对编译配置进行任何的修改,就可以支持许可证。编译目标已经达到了许可证的最低要求,因此,用户可以继续使用该版本的android 平台。 * 类似地,如果是在android 1.5(API level

3)的模拟器上运行Google API 附加组件 API 8,将其作为应用程序的运行时环境,就不需要修改应用程序的编译配置了。总的来说,为应用程序添加许可证应该对应用程序的编译配置没有什么影响。

下载LVL

许可证验证库(LVL )是?组帮助类的集合,在为应用程序添加许可证的时候,能够??简化?作。在任何情况下,下载LVL ,将其作为安装许可证的基础都是推荐的?种方式。

LVL 包可以在android SDK 中下载。该包中包括: * 存储在android 库?程内部的LVL 资源 * ?个基于LVL 库?程的、名为“sample”的实例程序。 这个实例介绍了应用程序如何使用库中的帮助类对许可证进行认证和执行。

要下载LVL 包到开发环境中,可以使用SDK 管理器。运行android SDK 管理器,选择Google Market Licensing 包,如下图2所示。同意服务条款,点击 Install Selected 开始下载。

文件:licensing_package.png

图2 包含LVL 及其实例的许可证包

下载完成之后,android SDK 管理器将会把LVL 库?程和实例程序安装在以下目录:

:/extras/google/market_licensing/library/ LVL 库?程 :/extras/google/market_licensing/sample/ 实例程序 如果您仍然不熟悉如何下载包到SDK ,请参考文档配置SDK

建立许可证认证库

下载了LVL 之后,需要将其安装到开发环境中,可以使用android 库?程,或者直接拷贝(导?)库资源到已有的程序包中。总的来说,将LVL 作为库?程来使用时比较推荐的?种方式,因为这样可以在不同的应用程序之间重复使用许可证代码,随着时间的推移,这样维护起来也方便。不过,要注意的是LVL 不是用来单独编译,或作为?个静态的jar 包添加到应用程序中的。

移动库资源的位置

有时用户需要在?定程度上自定义LVL 资源,因此需要将库资源(整个/market_licensing/library/目录)移动或复制到SDK 以外的?作目录中。然后使用新位置中的资源作为?作集。如果用户正在使用源代码管理系统,添加、追踪?作目录下的资源,而不是SDK 默认目录下的。

移动库资源很重要,因为将来更新许可证包的时候,SDK 会将新文件安装在与原文件相同的位置上。移动?作库文件是?种保险做法,确保用户的?作不会因为下载新版本的LVL 被无意中覆盖掉。

创建LVL 的库?程

使用LVL 的推荐方式是新建?个android 库?程。库?程是?种包含android 源代码和资源的开发?程。其他android 应用程序?程可以引用该库?程,而且,在编译的时候,会将编译的源代码放在.apk 文件中。放到授权这个例?中,就意味着只需要在库?程中?次性实现,然后再不同的应用程序?程中包含库的源代码即可。使用这种方式,可以很方便地维护、并集中管理多个?程的许可证的统?实现。LVL 是?个已经配置好的库?程——只要下载下来了,就直接可以使用了。如果使用安装ADT 的eclipse ,需要将LVL 作为新的开发?程添加到?作空间,就像添加新的应用程序?程?样。

1. 使用新?程引导从已有资源创建新?程。选择LVL 的库?程目录(该目录包含库的AndroidMainifest.xml 文件),作为?程的根目录。

2. 在创建库?程时,需要的话,可以选择应用程序的名字、包,以及其他属性。

3. 库的编译目标需要是android 1.5 (API level 3)以上。

创建完成之后,在project.properties 文件中已经定义?程为库?程,因此不需要再进行额外的设置了。更多关于如何创建应用程序?程或在eclipse 中使用库?程的信息,请参考在装有ADT 的eclipse 中管理应用程序 复制LVL 资源到应用程序

除了添加LVL 作为库?程之外,还可以直接将库资源拷贝到应用程序中。要实现该功能,直接拷贝(或导?)LVL 的src/目录即可。 如果用户使用的是直接将库资源添加到引用程序中的方法,则可以跳过下?部分,开始为应用程序添加许可证中描述的库的研究。

为应用程序添加库?程资源

如果要将LVL 资源当作库?程来使用,就需要在应用程序的?程属性中添加LVL 库?程的引用。该引用使编译?具在编译的时候将LVL 库?程资源添加到应用程序中。这个添加引用的过程依赖于开发环境。具体如下文所述。

使用安装ADT 的eclipse 开发,应该像上?部分描述的?样,已经添加库?程到?作空间了。如果还没有添加,在继续之前先添加。

然后,打开应用程序的?程属性窗?,如下图所示。选择"Android"属性组,点击添加,然后选择LVL 库?程(com_android_vending_licensing),点击确认。更多信息,请参考管理安装ADT 的eclipse ?程

文件:licensing_add_library.png

图3. 使用安装ADT 的eclipse 开发,可以通过应用程序的?程属性添加LVL 库?程到应用程序

如果使用SDK 命令行?具开发,导航至包含应用程序?程的文件夹,打开android.library.reference.,以及库的路径。例如:

android.library.reference.1=path/to/library_project 或者,可以使用该命令更新?程属性,添加库?程的引用: android update lib-project --target \ --path path/to/my/app_project \ --library path/to/my/library_project 更多如何使用库?程的信息,请参考建立库?程

建立测试环境

Google Play 发布者网站提供应用程序在发布之前测试许可证的配置?具。如果用户正在安装许可证,那么可以利用发布者网站的?具来测试应用程序政策,处理不同的许可证反馈信息和错误情况。

许可证测试环境的主要组件有:

* 在对应的帐号下配置测试反馈,这样用户使用发布者帐号或测试帐号登录后,上传应用程序到发布者帐号,请求服务器进行许可证认证时,就可以收到许可证反馈信息。 * ?组可选的测试帐号,用于当上传的应用程序的进行许可证认证时,接收静态测试反馈(不管应用程序有没有发布)。 * 用户使用发布者帐号或某?个测试帐号登陆之后,会有?个包含Google Play程序或Google API附加组件的应用程序的运行时环境。

正确地建立测试环境的步骤:

1. 设置许可证服务器返回的静态测试反馈

2. 需要的话建立测试帐号

3. 登陆到合适的模拟器或真机,激活许可证认证测试

下面给出详细信息。

设置许可证认证的静态反馈

Google Play提供发布者帐户的配置设置,使用户可以重写许可证认证过程,返回?个特定的静态反馈码。这个设置只能够用来测试,而且只应用于使用发布者帐号或注册的测试帐号登陆到模拟器或真机上的用户上传的应用程序的许可证认证。对于其他用户,服务器会根据?般规则进行许可证认证。

要在自?的帐号中设置测试反馈,先使用发布者帐号登陆,点击"Edit Profile"。在该页面,在Licensing面板中找到Test Response菜单,如下图所示。用户可以从全部有效的服务器反馈码中选择合适的,来控制要测试的应用程序的反馈和条件。

总的来说,用户应当确保使用Test Response菜单中每?个可用的反馈码来进行应用程序许可证的测试。关于这些反馈码的信息,请参考许可证引用中的服务器反馈码。

文件:licensing_test_response.png

图4. Licensing面板中的Edit Profile页面,展现了测试帐号字段和测试反馈菜单

需要注意的是,设置的测试反馈适用于帐户范围内——即不仅仅适用于单?程序,而是所有跟该发布者帐户有关的应用程序。如果?次测试多个程序,改变测试反馈将会影响接下来的所有许可证认证(假设用户使用发布者帐号或测试帐号登陆)。

成功接收到测试反馈之前,必须登陆安装程序、并正在请求服务器的模拟器或真机。尤其,必须使用已经建好的发布者帐号或某?个测试帐号登陆。更多关于测试帐号的信息,请参考下?部分。

参考服务器反馈码,查看可用的测试反馈码,以及各自表示的意义。

建立测试帐号

有些时候,用户可能希望让多个开发?组测试最终将要通过发布者帐号发布的应用程序上的许可证,但是,确不想给他们登陆该帐号的权限。为了达到这个需求,Google Play发布者网站允许用户建立?个或多个可选的测试帐号,这个测试帐号可以通过该发布者帐号请求许可证服务器、接收静态测试反馈。

测试帐号是用户注册在发布者帐号上的标准Google帐号。这样的帐号可以接收上传的应用程序的测试反馈。然后,开发者可以使用这些帐号登陆到模拟器或真机,激活已安装程序的许可证认证。服务器接收到测试帐户的用户发出的许可证认证请求,将会返回发布者帐号中设置的静态测试反馈码。

当然,测试帐号在权限上有?定的限制,包括: * 使用测试帐号的用户只能为已经上传到开发者帐号的应用程序请求许可证服务器 * 使用测试帐号的用户不能上传应用程序到开发者帐号 * 使用测试帐号的用户不能设置开发者帐号的静态测试反馈

下面的表格总结了开发者帐号、测试帐号和其他帐号在功能上的区别。

表1. 测试许可证的不同帐号之间的区别

Account Type Can check license before

upload?Can receive test

response?

Can set test

response?

Publisher

account

Yes Yes Yes

Test account No Yes No

Other No No No

注册发布者帐号的测试帐号

首先,需要注册发布者帐号的每?个测试帐号。如图4中所示,在Licensing面板的Edit Profile页面注册测试帐号。至需要输?以逗号隔开的帐号列表,点击保存即可。

用户可以使用任意Google帐号作为测试帐号。如果希望拥有并控制该测试帐号,可以自?建立?个帐号,然后将权限发放给开发?员和测试?员。

上传应用程序、分配测试帐号

如上所述,测试帐号只能接收上传到发布者帐号的应用程序的静态测试反馈。考虑到这些用户没有权限上传应用程序,作为发布者,应该和这些用户合作,收集要上传的应用,分配应用进行测试。关于收集和分配,任何方便的方法都可以使用。?旦应用程序上传了,在许可证服务器上可以看见该应用程序,开发?员和测试?员就可以不用上传新版本,也能在本地开发环境中继续修改程序。只有在本地应用程序修改了manifest文件中的versionCode属性时才需要重新上传。

为测试帐号分配公开密钥

许可证认证服务器以?般的方法处理静态测试反馈,包括签署许可证反馈数据、添加额外的参数等的功能。要支持开发?员使用测试帐号完成许可证的测试,而不是使用开发者帐号,就需要为他们分配公开密钥。没有权限登陆到开发者网站美酒没有权限获取公开密钥,没有公开密钥就不能验证许可证反馈。

需要注意的是,如果用户决定为自?的帐号生成?个新的许可证密钥,那么必须要通知所有测试帐号的用户。对测试?员来说,可以将新的密钥安装到应用程序包中,?起分配给用户。对于开发?员来说,需要直接将密钥给他们。

在运行时环境中使用授权帐号登陆

许可证服务用于决定特定的用户能否使用特定的应用程序——在进行许可证认证的时候,Google Play程序从系统的原始帐号中收集用户的信息,连同应用程序的包名和其他信息?起发送给服务器。但是,如果没有可用的用户信息,许可证认

使用Google 帐号登陆模拟器如果是在模拟器上进行许可证测试,需要使用?个Google 帐号登陆。如果没有看到创建Google 帐号的选项,那么有可能是该虚拟机是在标准的android 系统映像上,而不是在Google API 附加组件,API level 8(第?版)以上的系统映像上运行。更多信息,请参考上面的[建立运行时环

境](https://www.doczj.com/doc/d8579116.html,/Setting_Up_for_Licensing#.E5.BB.BA.E7.AB.8B.E8.BF.90.E8.A1.8C.E6.97.B6.E7.8E.AF.E5.A2.83)。

证将不会成功,Google Play 程序就会结束请求,返回?个错误。

测试时,要确保应用程序能够成功的访问服务器,必须确保使用以下帐户登陆到真机或模拟器: * 发布者帐户 * 发布者帐户注册的测试帐号

使用发布者帐号登陆的优势是,使应用程序在上传到发布者帐号之前,就可以接收

静态测试反馈。

如果用户是某?型组织的成员,或者是要发布的应用程序的外部?员,那么使用测

试帐号更合适些。

要登录到真机或模拟器,遵循以下步骤。推荐的方式是使用原始帐号登陆——然

而,如果真机或模拟器中已经存在其他帐号,可以创建?个额外的帐号,然后再使

用发布者帐号或测试帐号登陆。

1. 打开 Settings > Accounts & sync

2. 选择Add Account ,选择添加?个Google 帐号

3. 选择Next 然后Sign in 。

4. 输?发布者帐号或发布者帐号注册的测试帐号的用户名和密码。

5. 选择Sign in 。系统就会使用新的帐号登陆了。

?旦登陆了之后,就可以开始应用程序的许可证认证了(假设已经完成了上述了LVL 集成)。当应用程序激活许可证认证时,将会收到?个包含在发布者帐号中设置的静态测试反馈的反馈信息。

注意,如果使用的是模拟器,每次重启模拟器、清除数据时都需要重新登陆。

完成了上述步骤之后,继续为应用程序添加许可证。

贡献者:

eoe 耗? iceskysl

?eoe 移动开发者社区

本文链接: https://www.doczj.com/doc/d8579116.html,/page/Setting_Up_for_Licensing

相关主题
文本预览
相关文档 最新文档