我已经基于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()
来解决此问题,但这只是在避免问题而不是解决问题。另外,我什至不确定这是否与用户在控制台中报告的问题相同(也许是特定于模拟器环境的问题)。
谁能阐明这些错误并提供解决方案?
编辑更多信息:
null
-keep class com.google.android.vending.licensing.** { *; }
这是来自控制台的已清除混淆的崩溃日志(尽管我总是立即立即上传映射文件,由于某种原因有时它会说“此映射文件是在崩溃之后上传的”,由于我立即进行操作,这的确不能成立) :
multiDexEnabled true
答案 0 :(得分:2)
AndroidManifest.xml
isOccupied