2

私はアンドロイドアプリを構築しています。何らかの理由で、一部のデバイス (Samsung Galaxy など) で VerifyError が発生し、他のデバイス (Nexus 5 など) では発生しません。

この行で例外がスローされます。

AdManager.getInstance().preInit();

例外スタックは次のとおりです。

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)

問題の原因を特定しようとした後、次の行があることに気付きました。

catch (ReflectiveOperationException e) { ...

この行を削除し、代わりに一般的な例外を使用すると、VerifyError は発生しません。

では、ReflectiveOperationException によって一部のデバイスでこのエラーが発生するのはなぜでしょうか?

4

1 に答える 1

5

ReflectiveOperationExceptionAPI レベル 19 で追加されました。Android 4.4 より古いものを実行しているデバイスにはこのクラスがなく、 の 1 つのソースがVerifyError存在しないクラスを使用しようとしています。

于 2014-07-28T10:52:36.303 に答える