AppLicensing 失败 - 签名为空字符串
AppLicensing fails - signature is empty string
我已经为 InApp-Billing 实施了 App-Licensing,现在我得到了 Error.NOT_LICENSED
,但我不知道出了什么问题。我正在开发的版本尚未发布到 Play 商店。
这是我用来启动许可过程的代码:
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
中,方法 verify
的参数 signature
是一个空字符串,导致 sig.verify(Base64.decode(signature))
至 return ERROR.NOT_LICENSED
.
if (!sig.verify(Base64.decode(signature))) {
Log.e(TAG, "Signature verification failed.");
handleInvalidResponse();
return;
}
我只有一点点想法 UUID.randomUUID().toString()
可能是问题所在,但我不知道是否确实如此,也不知道在这里该做什么。
找到问题了。我实际上并没有将 alpha 版本发布到 playstore,所以 google play 明确禁止使用较新的版本,因为它不知道
解决方案:检查您安装的应用程序版本是否低于或等于发布到 google play(alpha、beta 或生产渠道)
的最新版本
我已经为 InApp-Billing 实施了 App-Licensing,现在我得到了 Error.NOT_LICENSED
,但我不知道出了什么问题。我正在开发的版本尚未发布到 Play 商店。
这是我用来启动许可过程的代码:
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
中,方法 verify
的参数 signature
是一个空字符串,导致 sig.verify(Base64.decode(signature))
至 return ERROR.NOT_LICENSED
.
if (!sig.verify(Base64.decode(signature))) {
Log.e(TAG, "Signature verification failed.");
handleInvalidResponse();
return;
}
我只有一点点想法 UUID.randomUUID().toString()
可能是问题所在,但我不知道是否确实如此,也不知道在这里该做什么。
找到问题了。我实际上并没有将 alpha 版本发布到 playstore,所以 google play 明确禁止使用较新的版本,因为它不知道
解决方案:检查您安装的应用程序版本是否低于或等于发布到 google play(alpha、beta 或生产渠道)
的最新版本