在开始为您的应用添加许可验证之前,您需要设置您的 Google Play 发布账号、开发环境以及验证您的实现所需的任何测试账号。
设置发布者账号
如果您还没有 Google Play 发布者账号,您需要使用您的 Google 账号注册一个,并同意 Google Play 服务条款。
欲了解更多信息,请参阅发布入门。
如果您已有 Google Play 发布者账号,请使用您的 Play 管理中心设置许可。
使用 Google Play 管理中心,您可以
- 获取应用专用的许可公钥
- 在发布应用之前,调试和测试应用的许可实现
- 发布您已添加许可支持的应用
许可管理设置
您可以在 Play 管理中心管理 Google Play 许可的多个管理控制项。这些控制项允许您
- 设置多个通过电子邮件地址识别的“测试账号”。许可服务器允许登录设备或模拟器上的测试账号的用户发送许可检查并接收静态测试响应。您可以在 Play 管理中心的“账号详情”页面设置账号。
- 配置服务器发送的静态测试响应,当它从登录发布者账号或测试账号的用户处收到针对已上传到发布者账号的应用的许可检查时。您可以在 Play 管理中心的“账号详情”页面设置测试响应。
- 获取应用的许可公钥。当您在应用中实现许可时,必须将公钥字符串复制到应用中。您可以在“服务与 API”页面(在“所有应用”下)获取应用的许可公钥。

图 1. 应用的许可密钥可在 Play 管理中心的“服务与 API”页面获取。
有关如何使用测试账号和静态测试响应的更多信息,请参阅下文的设置测试环境。
设置开发环境
为许可设置环境涉及以下任务
- 为开发设置运行时环境
- 将 LVL 下载到您的 SDK
- 设置许可验证库
- 在您的应用中包含 LVL 库项目
以下各节将介绍这些任务。完成设置后,您可以开始将许可添加到您的应用。
首先,您需要设置一个适当的运行时环境,以便您可以在其上运行、调试和测试您的应用对许可检查和强制执行的实现。
设置运行时环境
如前所述,应用检查许可状态并非通过直接联系许可服务器,而是通过绑定到 Google Play 应用提供的服务并发起许可检查请求。然后,Google Play 服务处理与许可服务器的直接通信,最后将响应路由回您的应用。要在您的应用中调试和测试许可,您需要设置一个包含必要的 Google Play 服务的运行时环境,以便您的应用能够向许可服务器发送许可检查请求。
您可以使用两种类型的运行时环境
- 包含 Google Play 应用的 Android 设备,或
- 运行 Google API 附加组件(API 级别 8 [版本 2] 或更高版本)的 Android 模拟器
在设备上运行
要使用 Android 设备调试和测试许可,设备必须
- 运行兼容的 Android 1.5 或更高版本(API 级别 3 或更高)平台,并且
- 运行预装有 Google Play 客户端应用的系统映像。
如果系统映像中未预装 Google Play,您的应用将无法与 Google Play 许可服务器通信。
有关如何设置设备以用于开发 Android 应用的常规信息,请参阅使用硬件设备。
在 Android 模拟器上运行
如果您没有可用设备,可以使用 Android 模拟器进行许可调试和测试。
由于 Android SDK 中提供的 Android 平台不包含 Google Play,因此您需要从 SDK 仓库下载 Google API 附加组件平台(API 级别 8 或更高版本)。下载附加组件后,您需要创建一个使用该系统映像的 AVD 配置。
Google API 附加组件不包含完整的 Google Play 客户端。但是,它提供了
- 一个实现了
ILicensingService
远程接口的 Google Play 后台服务,以便您的应用可以通过网络向许可服务器发送许可检查。 - 一组底层账号服务,可让您在 AVD 上添加 Google 账号并使用您的发布者账号或测试账号凭据登录。
使用您的发布者或测试账号登录使您无需发布即可调试和测试您的应用。欲了解更多信息,请参阅下文的登录授权账号。
SDK 管理器提供了多个版本的 Google API 附加组件,但只有 Android 2.2 及更高版本才包含必要的 Google Play 服务。
要设置用于为应用添加许可的模拟器,请按照以下步骤操作
- 启动 Android SDK 管理器,可通过 Android Studio 工具菜单(工具 > Android > SDK 管理器)或执行
<sdk>/tools/android sdk
获取。 - 选择并下载您想要定位的 Android 版本的 Google API(必须是 Android 2.2 或更高版本)。
- 下载完成后,打开 AVD 管理器,可通过 Android Studio 工具菜单(工具 > Android > AVD 管理器)或执行
<sdk>/tools/android avd
获取。 - 在“Android 虚拟设备管理器”窗口中,选择 + 创建虚拟设备来设置新 AVD 的配置详情。
- 在“虚拟设备配置”窗口中,选择设备硬件,然后选择下一步。
- 选择一个 Google API 作为要在新 AVD 上运行的系统映像,然后选择下一步。
- 为 AVD 分配一个描述性名称,然后根据需要设置其他配置详情。
- 选择完成以创建新的 AVD 配置,该配置将显示在可用 Android 虚拟设备列表中。
如果您不熟悉 AVD 或如何使用它们,请参阅管理虚拟设备。
更新您的项目配置
在您设置了满足上述要求的运行时环境(在实际设备或模拟器上)后,请确保根据需要更新您的应用项目或构建脚本,以便使用许可的编译 .apk
文件部署到该环境中。特别是,如果您在 Android Studio 中进行开发,请确保您设置了针对适当设备或 AVD 的运行/调试配置。
只要项目已配置为针对标准 Android 1.5(API 级别 3)或更高版本的库进行编译,您就不需要对应用的构建配置进行任何更改。为应用添加许可对应用的构建配置不应产生任何影响。
下载 LVL
许可验证库 (LVL) 是一组辅助类,可极大地简化您为应用添加许可所需的工作。在所有情况下,我们都建议您下载 LVL 并将其用作应用中许可实现的基础。
许可验证库 (LVL) 在 GitHub 上开发。您可以克隆 LVL 仓库并将其设置为库项目。通过在命令行中键入以下内容来克隆仓库
git clone https://github.com/google/play-licensing
该仓库包含
- LVL 源代码,存储在一个 Android 库项目中。
- 一个名为“sample”的示例应用,它依赖于 LVL 库项目。该示例说明了应用如何使用库辅助类来检查和强制执行许可。
设置许可验证库
将 LVL 下载到您的计算机后,您需要在开发环境中进行设置,可以将其设置为 Android 库项目,也可以直接将库源文件复制(或导入)到您现有的应用包中。通常,建议将 LVL 用作库项目,因为它允许您在多个应用中重用您的许可代码,并随着时间的推移更轻松地维护它。请注意,LVL 未设计为单独编译并作为静态 .jar 文件添加到应用中。
使用 LVL 的推荐方法是将其设置为新的 Android 库项目。库项目是一种开发项目,它包含共享的 Android 源代码和资源。其他 Android 应用项目可以引用该库项目,并在构建时将其编译后的源文件包含在其 .apk
文件中。在许可的背景下,这意味着您可以在库项目中进行大部分许可开发,然后将库源文件包含在您的各种应用项目中。通过这种方式,您可以轻松地在所有项目中保持统一的许可实现,并进行集中维护。如果您不熟悉库项目或如何使用它们,请参阅管理项目。
LVL 以配置好的库项目形式提供 — 一旦您下载它,就可以立即开始使用。
如果您在 Android Studio 中工作,您需要将 LVL 作为新模块添加到您的项目。
- 使用“从源导入模块”窗口,通过选择文件 > 新建 > 导入模块来导入库模块。
- 在“从源导入模块”窗口中,在“源目录”中,输入 LVL 的
library
目录(包含库的 AndroidManifest.xml 文件的目录)作为项目根目录(<sdk>/extras/google/play_licensing/library/AndroidManifest.xml
),然后选择下一步。 - 选择完成以导入库模块。
有关如何在 Android Studio 中使用库模块的更多信息,请参阅创建 Android 库。
在您的应用中包含 LVL 库项目源文件
如果您想将 LVL 源文件用作库项目,您需要在您的应用项目属性中添加对 LVL 库项目的引用。这会告诉构建工具在编译时将 LVL 库项目源文件包含到您的应用中。添加对库项目的引用的过程取决于您的开发环境,如下所述。
如果您在 Android Studio 中开发,您应该已经将库模块添加到您的项目,如前一节所述。如果您还没有这样做,请在继续之前立即执行。
如果您正在使用 SDK 命令行工具进行开发,请导航到包含您的应用项目的目录并打开 project.properties
文件。在该文件中添加一行,指定 android.library.reference.<n>
键和库的路径。例如
android.library.reference.1=path/to/library_project
另外,您可以使用此命令更新项目属性,包括对库项目的引用
android update lib-project --target <target_ID> \ --path path/to/my/app_project \ --library path/to/my/library_project
有关使用库项目的更多信息,请参阅设置库项目。
设置测试环境
Google Play 管理中心提供了配置工具,可让您和其他人在应用发布前测试其许可。在您实现许可时,您可以利用 Play 管理中心工具测试应用的政策以及对不同许可响应和错误条件的处理。
许可测试环境的主要组件包括
- 您发布者账号中的“测试响应”配置,它允许您设置当服务器处理从登录发布者账号或测试账号的用户处收到的针对已上传到发布者账号的应用的许可检查时返回的静态许可响应。
- 一组可选的测试账号,当它们检查您已上传的应用的许可时(无论该应用是否已发布),将收到静态测试响应。
- 应用的运行时环境,其中包含 Google Play 应用或 Google API 附加组件,并且用户已登录发布者账号或其中一个测试账号。
正确设置测试环境涉及
- 设置由许可服务器返回的静态测试响应。
- 根据需要设置测试账号。
- 在发起许可检查测试之前,正确登录模拟器或设备。
以下各节提供更多信息。
设置许可检查的测试响应
Google Play 在您的发布者账号中提供了一个配置设置,允许您覆盖许可检查的正常处理并返回指定的静态响应代码。该设置仅用于测试,并且仅适用于由登录模拟器或设备并使用发布者账号凭据或已注册测试账号的用户发起的,针对您已上传的应用的许可检查。对于其他用户,服务器始终根据正常规则处理许可检查。
要为您的账号设置测试响应,请登录您的发布者账号并点击“编辑个人资料”。在“编辑个人资料”页面中,找到许可面板中的“测试响应”菜单,如下所示。您可以从所有有效的服务器响应代码中进行选择,以控制您想要在应用中测试的响应或条件。
通常,您应确保使用“测试响应”菜单中提供的每个响应代码测试应用的许可实现。有关代码的说明,请参阅许可参考中的服务器响应代码。

图 2. 您的“账号详情”页面的“许可测试”面板允许您设置测试账号并管理测试响应。
请注意,您配置的测试响应适用于整个账号 — 也就是说,它不仅适用于单个应用,还适用于与发布者账号关联的所有应用。如果您同时测试多个应用,更改测试响应将影响所有这些应用在下次许可检查时的行为(如果用户已使用发布者账号或测试账号登录模拟器或设备)。
在您成功接收许可检查的测试响应之前,您必须登录安装了该应用的设备或模拟器,并且该设备或模拟器正在向服务器查询。具体来说,您必须使用您的发布者账号或您已设置的测试账号之一进行登录。有关测试账号的更多信息,请参阅下一节。
有关可用测试响应及其含义的列表,请参阅服务器响应代码。
设置测试账号
在某些情况下,您可能希望允许多个开发团队测试最终将通过您的发布者账号发布的应用的许可,但又不向他们提供您的发布者账号登录凭据。为了满足这一需求,Google Play 管理中心允许您设置一个或多个可选的测试账号 — 授权查询许可服务器并从您的发布者账号接收静态测试响应的账号。
测试账号是您在您的发布者账号上注册的标准 Google 账号,以便它们将收到您已上传的应用的测试响应。然后,开发者可以使用测试账号凭据登录其设备或模拟器,并从已安装的应用发起许可检查。当许可服务器收到来自测试账号用户的许可检查时,它会返回为发布者账号配置的静态测试响应。
必然地,通过测试账号登录的用户所获得的访问权限和许可存在限制,包括
- 测试账号用户只能查询已上传到发布者账号的应用的许可服务器。
- 测试账号用户无权将应用上传到您的发布者账号。
- 测试账号用户无权设置发布者账号的静态测试响应。
下表总结了发布者账号、测试账号和任何其他账号之间的功能差异。
表 1. 用于测试许可的账号类型差异。
账号类型 | 上传前可以检查许可吗? | 可以接收测试响应吗? | 可以设置测试响应吗? |
---|---|---|---|
发布者账号 | 是 | 是 | 是 |
测试账号 | 否 | 是 | 否 |
其他 | 否 | 否 | 否 |
在发布者账号上注册测试账号
首先,您需要在您的发布者账号中注册每个测试账号。如图 2 所示,您可以在发布者账号的“编辑个人资料”页面的“许可”面板中注册测试账号。只需以逗号分隔列表的形式输入账号,然后点击保存以保存您的个人资料更改。
您可以使用任何 Google 账号作为测试账号。如果您想拥有并控制这些测试账号,您可以自行创建账号并将凭据分发给您的开发者或测试人员。
处理测试账号用户的应用上传和分发
如上所述,测试账号用户只能接收已上传到发布者账号的应用的静态测试响应。由于这些用户无权上传应用,因此作为发布者,您需要与这些用户协作,收集要上传的应用并分发已上传的应用进行测试。您可以以任何方便的方式处理收集和分发。
一旦应用上传并被许可服务器识别,开发者和测试人员就可以在他们的本地开发环境中继续修改应用,而无需上传新版本。只有当本地应用在清单文件中递增了 versionCode
属性时,您才需要上传新版本。
将您的公钥分发给测试账号用户
许可服务器以正常方式处理静态测试响应,包括签署许可响应数据、添加额外参数等。为了支持使用测试账号而不是发布者账号实现许可的开发者,您需要将应用的许可公钥分发给他们。没有 Play 管理中心访问权限的开发者无法访问应用的公钥,没有该密钥他们将无法验证许可响应。
请注意,如果您因某种原因决定为应用生成新的许可密钥对,您需要通知所有测试账号用户。对于测试人员,您可以将新密钥嵌入到应用包中并分发给用户。对于开发者,您需要直接将新密钥分发给他们。
在运行时环境中登录授权账号
许可服务旨在确定给定用户是否获得许可使用给定应用 — 在许可检查期间,Google Play 应用会从系统中的主账号收集用户 ID,并连同应用的包名及其他信息发送到服务器。但是,如果没有可用的用户信息,许可检查将无法成功,因此 Google Play 应用会终止请求并向应用返回错误。
在测试期间,为确保您的应用能够成功查询许可服务器,您必须确保您使用以下凭据登录设备或模拟器上的账号
- 发布者账号的凭据,或
- 已在发布者账号中注册的测试账号的凭据
在模拟器上登录 Google 账号
如果您没有看到创建新 Google 账号的选项,问题可能是您的 AVD 正在运行标准的 Android 系统映像,而不是 Google API 附加组件(API 级别 8 [版本 2] 或更高版本)。
欲了解更多信息,请参阅上文的设置运行时环境。
使用发布者账号登录的优势在于,即使应用尚未上传到 Play 管理中心,您的应用也可以接收静态测试响应。
如果您是大型组织的一部分,或者正在与外部团体合作开发将通过您的网站发布的应用,您更可能希望分发测试账号,然后在测试期间使用这些账号登录。
要在设备或模拟器上登录,请按照以下步骤操作。首选方法是作为主账号登录 — 但是,如果设备或模拟器上已有其他账号正在使用,您可以创建附加账号并使用发布者或测试账号凭据登录。
- 打开“设置 > 账号与同步”
- 选择添加账号并选择添加 Google 账号。
- 选择下一步,然后选择登录。
- 输入发布者账号或在发布者账号中注册的测试账号的用户名和密码。
- 选择登录。系统会将您登录到新账号。
登录后,您就可以开始测试应用中的许可(如果您已完成上述 LVL 集成步骤)。当您的应用发起许可检查时,它将收到包含发布者账号上配置的静态测试响应的回应。
请注意,如果您正在使用模拟器,每次重启模拟器并清除数据时,您都需要重新登录发布者账号或测试账号。
完成设置步骤后,请继续将许可添加到您的应用。