2017-09-03 5 views
1

私の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代替品を使用する必要がありました。

答えて

0

私はこれに関する専門家ではありませんが、塩があなたのアプリにとって無作為である限り、ランダムであると思います。あなたは即座にそれを生成しません。 documentationを参照してください。

AESObfuscatorを使用するには、まずアクティビティにインポートします。プライベート静的最終配列を宣言してソルトバイトを保持し、20個のランダムに生成されたバイトに初期化します。

... 
// Generate 20 random bytes, and put them here. 
private static final byte[] SALT = new byte[] { 
-46, 65, 30, -128, -103, -57, 74, -64, 51, 88, -95, 
-45, 77, -117, -36, -113, -11, 32, -64, 89 
}; 
... 
+0

残念ながら動作しませんでした。ちょうどそれを使用して更新をプッシュし、まだエラーを取得します。 –

+0

私はGoogleサポートに連絡し、ライセンスサーバーがライセンス対応を返すと伝えました。 –

関連する問題