4

Android ライセンスの ServerManagedPolicy で AESOBfuscator を使用しています。これまで、次のように deviceId を作成しました。

String deviceId = Secure.getString( getContentResolver(), Secure.ANDROID_ID );

インターネット上のすべての例では、このように行われていますが、あまり安全ではないと述べられていることもありますが、他の方法は説明されていません. ANDROID_ID は簡単に変更したり、null にすることもできると読んだので、一意の ID を取得する別の方法が本当に必要です。私のアプリを購入した人がライセンスに何度も失敗しましたが、これが原因であると確信しています。

では、どうすればこれを行うことができますか?ランダムなハッシュを作成し、それを deviceId に追加するだけです (もちろん、どこかに保存します..?)

4

1 に答える 1

6

「安全」とはどういう意味ですか? ルート化されたデバイスで編集しにくくするために、設定を難読化するだけの問題です. ANDROID_ID は、デバイスをリセットする (すべてのデータを削除する) か、ルート化されたデバイスで誰かが編集した場合に変更される可能性があります。最初のケースは実際には問題ではありません。2 番目のケースでは、保存された設定を復号化 (難読化解除) できないため、これをエラーとして扱います。本当に null の場合は、何らかのフォールバック値を考える必要があります。

ここでのポイントは、一意の ID を持つことではなく、デバイス固有のデータを使用して設定を難読化し、別のデバイスに単純にコピーできないようにすることです。IMEI のハッシュ、WiFi アダプターの MAC アドレス、またはその他のデバイス固有のものを使用できますが、特定のプロパティが利用できない場合を処理する必要があります (たとえば、WiFi のみのタブレットには IMEI がありません。 )

ACRA や BugSense などのエラー報告ライブラリを使用して、実際のエラーを追跡し、ライセンスの失敗の背後にある本当の原因を理解してください。Google インフラストラクチャの障害である場合もあるため、これにも対処する必要があります (ライセンス ステータスのキャッシュなど)。

于 2012-06-11T01:54:27.497 に答える