私のAndroidアプリはLVLを実装し、起動時に有効なライセンスを確認します。私はServerManagedPolicyを使用しています。テストアカウントを使用するか、Playストアからアプリを購入すると、無許可の応答が返され、ユーザーは非常に迷惑になります。アプリを購入したときにGoogle Playの無免許応答
関連するコード:
final Random r = new SecureRandom();
byte[] SALT = new byte[20];
r.nextBytes(SALT);
lkey = "MyGooglePlayKey(hidden)";
android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
mChecker = new LicenseChecker(
this, new ServerManagedPolicy(this,
new AESObfuscator(SALT, getPackageName(), android_id)), lkey);
これはSettings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID)
の問題ですか?当然のことながら、Androidのライセンス供与文書は、デバイスIDの取得方法について全く助けを得ておらず、別の方法を使用するには別の許可が必要です。私のメソッドは、Android Studioに「getStringを使用してデバイス識別子を取得することは推奨されていません」と言っています。
非常に古いロリポップのバグのため、私のLicenseCheckerクラスは、明示的な意図を使用するように変更する必要がありましたので:
:if (mService == null) {
Log.i(TAG, "Binding to licensing service.");
try {
Intent serviceIntent = new Intent(new String(Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U=")))
.setPackage("com.android.vending");
boolean bindResult = mContext.bindService(serviceIntent,
this, // ServiceConnection.
Context.BIND_AUTO_CREATE);
マイLVLライブラリは、私のアプリと同じtargetSDK /コンパイル/ minSDKを使用しています
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
useLibrary 'org.apache.http.legacy'
defaultConfig {
minSdkVersion 17
targetSdkVersion 26
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
dependencies {
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}
NamePairValue
との方法が廃止されているため、これらのApache代替品を使用する必要がありました。
残念ながら動作しませんでした。ちょうどそれを使用して更新をプッシュし、まだエラーを取得します。 –
私はGoogleサポートに連絡し、ライセンスサーバーがライセンス対応を返すと伝えました。 –