在尝试解决这个奇怪的问题将近 2 周后,我放弃了!基本上每次我尝试仅在具有 Android 2.xx 的设备上运行我的应用程序时都会得到 java.lang.VerifyError 从 3.xx 一切都进展顺利。
在项目中我使用这两个外部库:
- 动作条 Sherlock - http://actionbarsherlock.com/ - 在 v4.4.0 更新
- 滑动菜单 - https://github.com/jfeinstein10/SlidingMenu
这是 LogCat 每次返回的内容:
FATAL EXCEPTION: main
java.lang.VerifyError: me.xxx.menu.MenuListFragment
at me.xxx.menu.BaseSlidingMenuActivity.onCreate(BaseSlidingMenuActivity.java:46)
at me.xxx.menu.SlidingMenuCustomAnimation.onCreate(SlidingMenuCustomAnimation.java:28)
at me.xxx.XXXActivity.onCreate(XXXActivity.java:130)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
这就是 BaseSlidingMenuActivity.java 在第 46 行附近的样子:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(mTitleRes);
// set the Behind View
setBehindContentView(R.layout.frame_content);
if (savedInstanceState == null) {
FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
mFrag = new MenuListFragment(); <--- ERROR HERE!
t.replace(R.id.frame_content, mFrag);
t.commit();
} else {
mFrag =(SherlockListFragment)this.getSupportFragmentManager()
.findFragmentById(R.id.frame_content);
}
...
...
}
其中 MenuListFragment() 是一个 SlidingFragmentActivity,它扩展了一个 SherlockFragmentActivity 并实现了 SlidingActivityBase。
当然,我用谷歌搜索了这个问题,似乎很多人都在使用最新版本的 Android SDK 工具,即 v22.xx 时遇到这个问题,实际上是 v22.6.3。
有些人解决了验证错误,只是将检查放在“私有库”框上,在“BuildPath->配置 BuildPath->订单和导出”菜单中,正如其他关于验证错误的对话中所解释的那样,但对我来说不起作用,甚至因为已经检查了“私人图书馆”。所以图书馆/进口情况似乎没问题!
希望有人已经为此提供了解决方案!我快疯了!:D
谢谢!