解決策を数日検索した後、私の場合のエラーが見つかりました。
LicenseChecker を使用して、リスナーがコード 3 の applicationError をコールバックするのを見ました。コードは次のとおりです。
aep = new APKExpansionPolicy(this,
new AESObfuscator(ContentDownloaderService.SALT, getPackageName(), deviceId));
aep.resetPolicy();
checker = new LicenseChecker(this, aep,
BASE64_PUBLIC_KEY // Your public licensing key.
);
checker.checkAccess(new LicenseCheckerCallback() {
@Override
public void allow(int reason) {
System.out.println("Allow Reason "+reason);
}
@Override
public void dontAllow(int reason) {
System.out.println("Don't Allow Reason "+reason);
try {
switch (reason) {
case Policy.NOT_LICENSED:
System.out.println("Not licensed");
break;
case Policy.RETRY:
System.out.println("Retry");
break;
}
} finally {
}
}
@Override
public void applicationError(int errorCode) {
System.out.println("aplication error "+errorCode);
}
});
エラー コード 3 は ERROR_NOT_MARKET_MANAGED です。ここでエラーの完全なリストを確認できますhttps://developer.android.com/google/play/licensing/licensing-reference.html#server-response-codes、ここでそれに関する情報を取得できますerror mean LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED エラー コードをどのように処理しますか?
要約すると、これは私のローカル バージョンが Google コンソールのバージョンと同じではないために発生し、versionCode が次のようなスクリプトによって生成されたために発生しました。
def getBuildVersionCode() {
def date = new Date()
def formattedDate = date.format('yyMMddHHmm')
return (formattedDate as int) + 221066279;
}
def getBuildVersionName() {
return getBuildVersionCode().toString();
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.test.testing"
minSdkVersion 15
targetSdkVersion 21
versionCode getBuildVersionCode()
versionName getBuildVersionName()
}
そのため、コンパイルするたびに新しいバージョンを取得していますが、明らかにそのバージョンは Google コンソールにはありません。
gradle スクリプトを次のように変更しました。
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.test.testing"
minSdkVersion 15
targetSdkVersion 21
versionCode 1731227595 // My actual version number of apk in google developer console.
versionName 1731227595
}
そして、それは私の命を救いました。この答えが誰にとっても役立つことを願っています..