4

我正在为付费应用程序制作应用程序 android 许可证。在这个应用程序中,我根据我的应用程序详细信息提供了 base 64 公钥和 salt 20 个随机数。我的代码如下:

初始化变量如下:

  private static final String BASE64_PUBLIC_KEY = "xxxxxx";
  private static final byte[] SALT = new byte[] {xxxxxxxxxxxxxxxx};
  private LicenseChecker mChecker;
  private LicenseCheckerCallback mLicenseCheckerCallback;

在 oncreate() 中这样做:

   String deviceId = Secure.getString(getContentResolver(),Secure.ANDROID_ID);
   mLicenseCheckerCallback = new MyLicenseCheckerCallback();
   mChecker = new LicenseChecker(this, (Policy) new ServerManagedPolicy(this,
                   new AESObfuscator(SALT, getPackageName(), deviceId)),
                   BASE64_PUBLIC_KEY);
   mChecker.checkAccess(mLicenseCheckerCallback);

和我的许可证检查器回调函数是这样的:

      private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
           @Override
           public void allow(int result) {
                   if (isFinishing()) {
                           return;
                   }
           }

           @Override
           public void applicationError(int errorCode) {
                   if (isFinishing()) {
                           return;
                   }
           }
           @SuppressWarnings("deprecation")
           @Override
           public void dontAllow(int result) {
                   if (isFinishing()) {
                           return;
                   }
                   showDialog(0);
           }
    }

从这里我导出了apk文件并作为草稿存储在google play中,并使用google play中提供的测试帐户作为测试帐户和我的设备中使用的相同帐户进行了测试。我多次测试这个应用程序,每次它只显示未许可的对话。问题是什么?请帮助我..

4

1 回答 1

2

由于您的公钥导致此错误,在 google play 中,Base64-encoded RSA public key对于从您的 google 帐户发布的每个新应用程序都会产生不同的结果。apk在为您的应用程序创建之前检查该密钥。

于 2013-03-26T09:10:40.650 回答