use*_*741 2 java reflection android verifyerror
我构建了一个Android应用程序.出于某种原因,我在某些设备(例如Samsung Galaxy)上获得VerifyError,而在其他设备上没有(例如在Nexus 5上).
抛出此行的异常:
AdManager.getInstance().preInit();
Run Code Online (Sandbox Code Playgroud)
exeption堆栈是:
java.lang.VerifyError: org/example/crossword/Ads/AdManager
at org.example.crossword.PuzzleActivity.onCreate(PuzzleActivity.java:55)
at android.app.Activity.performCreate(Activity.java:5255)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
at android.app.ActivityThread.access$700(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5306)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
在尝试找出导致问题的原因之后,我注意到我有这条线:
catch (ReflectiveOperationException e) { ...
Run Code Online (Sandbox Code Playgroud)
当我删除此行,并使用常规Exception时,不会发生VerifyError.
所以,我想知道为什么ReflectiveOperationException会在某些设备上导致此错误?
ReflectiveOperationException在API级别19中添加了任何设备.运行早于Android 4.4的设备的任何设备都不会有此类,并且a的一个来源VerifyError是尝试使用不存在的类.
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |