AppLicensing失败 - 签名为空字符串

时间:2018-01-23 08:01:22

标签: android google-play in-app-purchase licensing in-app-billing

我已经为InApp-Billing实施了App-Licensing,现在我得到了Error.NOT_LICENSED,我不知道出了什么问题。我正在处理的版本尚未发布到游戏商店。

这是我用来启动许可过程的代码:

private void checkLicense(int retries) {
  if (retries != 5) {
    String publicKey = "YOUR KEY";
    final CdcLicenseCheckerCallback callback = new CdcLicenseCheckerCallback();
    String deviceId = mPrefsHandler.getDeviceId();
    deviceId = deviceId != null ? deviceId : UUID.randomUUID().toString();
    mPrefsHandler.setDeviceId(deviceId);
    Crashlytics.setBool("has Device-Id", deviceId != null);
    final LicenseChecker checker = new LicenseChecker(this, new ServerManagedPolicy(this,
        new AESObfuscator(new byte[] { 1, 1, ... , 1 }, getPackageName(),
            deviceId)), publicKey);
    checker.checkAccess(callback);
  }
}

我使用生产变体来弄清楚发生了什么,并发现在LicenseValidator.java中,方法signature的参数verify是一个空字符串,导致sig.verify(Base64.decode(signature))返回ERROR.NOT_LICENSED

if (!sig.verify(Base64.decode(signature))) {
  Log.e(TAG, "Signature verification failed.");
  handleInvalidResponse();
  return;
}

我只是暗示UUID.randomUUID().toString()可能是个问题,但我不知道,无论是实际的,也不知道该做什么。

1 个答案:

答案 0 :(得分:7)

发现问题。我实际上没有将alpha版本发布到Playstore,所以google play明确禁止使用更新的版本,因为它不知道它

解决方案:检查您安装的应用版本是否低于或等于发布到Google Play(Alpha,测试版或制作频道)的最新版本