LVL 类和接口
表 1 列出了通过 Android SDK 提供的许可验证库 (LVL) 中的所有源文件。所有文件都是 com.android.vending.licensing 软件包的一部分。
表 1. LVL 库类和接口的摘要。
| 类别 | 名称 | 说明 |
|---|---|---|
| 许可检查和结果 | LicenseChecker | 为启动许可检查而实例化(或子类化)的类。 |
| LicenseCheckerCallback | 为处理许可检查结果而实现的接口。 | |
| 政策 | Policy | 为根据许可响应确定是否允许访问应用而实现的接口。 |
| ServerManagedPolicy | 默认 Policy 实现。使用许可服务器提供的设置管理许可数据的本地存储、许可有效性、重试。 |
|
| StrictPolicy | 替代 Policy 实现。仅基于来自服务器的直接许可响应强制执行许可。不使用缓存,也不重试请求。 |
|
| 数据混淆(可选) |
Obfuscator | 使用 Policy(例如 ServerManagedPolicy)在持久存储区中缓存许可响应数据时要实现的接口。采用混淆算法对写入或读取的数据进行编码和解码。 |
| AESObfuscator | 默认混淆器实现,使用 AES 加密/解密算法对数据进行混淆/反混淆。 | |
| 设备限制(可选) |
DeviceLimiter | 如果您只想允许特定设备使用某个应用,可以实现该接口。从 LicenseValidator 调用。对于大多数应用,除非设计得非常谨慎,否则建议不要实现 DeviceLimiter,因为它需要后端服务器,并且可能导致用户无法访问所许可的应用。 |
| NullDeviceLimiter | 默认的 DeviceLimiter 实现,是一种空操作(允许访问所有设备)。 | |
| 库核心,无需集成 | ResponseData | 包含许可响应字段的类。 |
| LicenseValidator | 该类用于解密和验证从许可服务器收到的响应。 | |
| ValidationException | 该类指示在验证由混淆器管理的数据的完整性时发生错误。 | |
| PreferenceObfuscator | 该实用程序类用于向系统的 SharedPreferences 存储区写入/从中读取经过混淆的数据。 |
|
| ILicensingService | 单向 IPC 接口,用于将许可检查请求传递到 Google Play 客户端。 | |
| ILicenseResultListener | 单向 IPC 回调实现,应用通过它从许可服务器接收异步响应。 |
服务器响应
表 2 列出了 许可服务器。
表 2. 许可响应字段摘要 由 Google Play 服务器返回
| 字段 | 说明 |
|---|---|
responseCode |
许可服务器返回的响应代码。响应代码为 服务器响应代码中列出的步骤。 |
signedData |
保存许可服务器返回的数据的字符串串联,如下所示:
responseCode|nonce|packageName|versionCode|userId|timestamp:extras。
|
signature |
使用应用专用密钥的 signedData 签名。
|
服务器响应代码
表 3 列出了 许可服务器。通常,应用应处理所有这些响应代码。默认情况下,LVL 中的 LicenseValidator 类可为您对这些响应代码进行所有必要的处理。
表 3. 许可响应中由 Google Play 服务器返回的响应代码摘要。