所有 - 我有一个应用程序可以在我的实际设备(Android 4.0.4)和我的大多数模拟器(2.3.3、3.0、3.1、3.2、4.0、4.0.3 等)上正常运行。当我尝试通过 onClick 方法从活动 A 更改为活动 B 时,在我的 2.2 模拟器上它强制关闭。我在 logcat 中得到了这个:
07-16 01:01:10.487: E/AndroidRuntime(277): FATAL EXCEPTION: main
07-16 01:01:10.487: E/AndroidRuntime(277): java.lang.VerifyError: flatirons.applications.monopoly.Properties
07-16 01:01:10.487: E/AndroidRuntime(277): at java.lang.Class.newInstanceImpl(Native Method)
07-16 01:01:10.487: E/AndroidRuntime(277): at java.lang.Class.newInstance(Class.java:1429)
07-16 01:01:10.487: E/AndroidRuntime(277): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
07-16 01:01:10.487: E/AndroidRuntime(277): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
07-16 01:01:10.487: E/AndroidRuntime(277): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-16 01:01:10.487: E/AndroidRuntime(277): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-16 01:01:10.487: E/AndroidRuntime(277): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-16 01:01:10.487: E/AndroidRuntime(277): at android.os.Handler.dispatchMessage(Handler.java:99)
07-16 01:01:10.487: E/AndroidRuntime(277): at android.os.Looper.loop(Looper.java:123)
07-16 01:01:10.487: E/AndroidRuntime(277): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-16 01:01:10.487: E/AndroidRuntime(277): at java.lang.reflect.Method.invokeNative(Native Method)
07-16 01:01:10.487: E/AndroidRuntime(277): at java.lang.reflect.Method.invoke(Method.java:521)
07-16 01:01:10.487: E/AndroidRuntime(277): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-16 01:01:10.487: E/AndroidRuntime(277): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-16 01:01:10.487: E/AndroidRuntime(277): at dalvik.system.NativeStart.main(Native Method)
我做了一些研究,发现原因java.lang.VerifyError
是缺少该 API 不支持的功能(即在 android 1.6 中使用 NFC),或者使用不兼容的外部库。我没有使用外部库,所以我想我必须使用仅在 android 2.3.3+ 中可用的高级功能。我去了问题行,即 1429,发现了这个spinner1.getSelectedItem().toString();
。然后我去了 android 网站,发现这个方法从 API 1 开始就存在了。应用程序的其他功能包括:微调器、按钮、4 个活动、edittext、textview 和一个菜单。java.lang.VerifyError
问题:除了不兼容的外部库和 android 功能之外,还有什么可能导致的?我会根据您的要求从特定行发布代码。谢谢你的时间!