java.lang.VerifyError:me.xxx.menu.MenuListFragment仅适用于Android 2.x.x.

时间:2014-05-02 04:22:13

标签: actionbarsherlock slidingmenu verifyerror

经过近2周试图解决这个奇怪的问题,我放弃了! 基本上每次我尝试运行我的应用程序时都会获取java.lang.VerifyError 仅适用于使用Android 2.x.x的设备。从3.x.x开始一切顺利。

在项目中我正在使用这两个外部库:

  1. Action Bar Sherlock - http://actionbarsherlock.com/ - 在v4.4.0更新
  2. 滑动菜单 - https://github.com/jfeinstein10/SlidingMenu
  3. 这就是每次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()是一个扩展SherlockFragmentActivity的SlidingFragmentActivity 并实现SlidingActivityBase。

    当然我用Google搜索了问题,似乎很多人都是这样做的 问题与最新版本的Android SDK工具,即v22.x.x,实际上是一个问题 v22.6.3。

    有些人解决了VerifyError,只是将Check放在“私有库”上 框中,在“BuildPath-&gt;配置BuildPath-&gt;订单和导出”menù中,如上所述 在关于VerifyError的其他对话中,但对我来说不起作用,即使因为已经检查了“私有库”。所以库/进口情况似乎没问题!

    希望有人已为此提供资金支持!我疯了! :d

    谢谢!

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案!

回顾!基本上,这是导致此错误的两个主要原因:

  1. (在我的情况下)我在API级别低于10的设备上尝试运行我的应用时始终收到VerifyError,因为我试图捕获Android API级别支持的SQLiteDatabaseLockedException 11.因此,要解决此问题,请检查您的最低API级别是否支持每个Exception或可能的方法(即API级别9支持的String.isEmpty())。

  2. 在我寻找解决方案的过程中,我发现很多人得到了VerifyError,因为Libraries Imports存在一些问题,如本文所述:http://commonsware.com/blog/2013/05/23/do-not-manually-modify-eclipse-build-path-except-now-r22.html

  3. 希望能帮助我以外的人! :d

    再见!再见!毛虫。