Android P

时间:2018-12-10 22:55:40

标签: android

我已经基于this guide(尤其是使用this sample code)设置了许可证检查器,并且已经运行了一段时间。

但是最近我从Android P设备获取崩溃报告,但出现以下错误:

java.lang.NoClassDefFoundError: 
  at com.google.android.vending.licensing.ServerManagedPolicy.d (ServerManagedPolicy.java:22)
  at com.google.android.vending.licensing.ServerManagedPolicy.a (ServerManagedPolicy.java:22)
  at com.google.android.vending.licensing.LicenseValidator.a (LicenseValidator.java:2)
  at com.google.android.vending.licensing.LicenseChecker$ResultListener$2.run (LicenseChecker.java:245)
  at android.os.Handler.handleCallback (Handler.java:873)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:280)
  at android.os.HandlerThread.run (HandlerThread.java:65)
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at com.google.android.vending.licensing.ServerManagedPolicy.d (ServerManagedPolicy.java:22)
  at com.google.android.vending.licensing.ServerManagedPolicy.a (ServerManagedPolicy.java:22)
  at com.google.android.vending.licensing.LicenseValidator.a (LicenseValidator.java:2)
  at com.google.android.vending.licensing.LicenseChecker$ResultListener$2.run (LicenseChecker.java:245)
  at android.os.Handler.handleCallback (Handler.java:873)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:280)
  at android.os.HandlerThread.run (HandlerThread.java:65)

通过在Android P模拟器上进行的一些测试,我无法重现以上相同的错误,但是我发现signedData的变量null在{{1} } ...请参见代码here。我可以通过按照this post检查LicenseValidator.verify()来解决此问题,但这只是在避免问题而不是解决问题。另外,我什至不确定这是否与用户在控制台中报告的问题相同(也许是特定于模拟器环境的问题)。

谁能阐明这些错误并提供解决方案?

编辑更多信息:

  1. 我曾尝试(但没有成功)将以下内容添加到proguard规则中,以防proguard剥离不应该的内容: null
  2. 我还尝试了(没有成功)在我的build.gradle中启用multidex:  -keep class com.google.android.vending.licensing.** { *; }
  3. 当我直接将apk发送给用户并以与提交给Play商店的形式完全相同的形式进行编译时,没有崩溃...似乎只是崩溃的Play商店版本

这是来自控制台的已清除混淆的崩溃日志(尽管我总是立即立即上传映射文件,由于某种原因有时它会说“此映射文件是在崩溃之后上传的”,由于我立即进行操作,这的确不能成立) :

multiDexEnabled true

1 个答案:

答案 0 :(得分:2)

AndroidManifest.xml

isOccupied