应用启动时隐藏的bug java.lang.NoClassDefFoundError

时间:2014-12-02 15:05:12

标签: java android in-app-billing android-billing

添加一个lib后,我遇到与Unable to execute dex: method ID not in [0, 0xffff]: 65536

相同的错误

我确实使用了Android Studio 0.8.14,将其更新为1.0 RC2(最新于2014年12月2日),添加了multiDexEnabled = true,好吧,项目构建良好。在这个应用程序中,我有计费。我在设备上运行我的应用程序(尝试在模拟器和真实设备上,结果相同),我看到这个例外:

java.lang.NoClassDefFoundError: <mypackagename>.util.IabHelper$1
            at <mypackagename>.util.IabHelper.startSetup(IabHelper.java:210)
            at <mypackagename>.ParentActivity.onCreate(ParentActivity.java:159)
            at <mypackagename>.SplashScreenActivity.onCreate(SplashScreenActivity.java:60)
            at android.app.Activity.performCreate(Activity.java:4494)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1940)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2001)
            at android.app.ActivityThread.access$600(ActivityThread.java:130)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1163)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4444)
            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:787)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
            at dalvik.system.NativeStart.main(Native Method)

IabHelper - 由Google提供,用于轻松实现应用内部构建。这是这个类的210个字符串:

mServiceConn = new ServiceConnection() {

    @Override
    public void onServiceDisconnected(ComponentName name) {
        ...
    }

    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        ...
    }
};

当我使用Android studio 0.8.14时,这个工作很好,这个问题只在更新后出现。我不能降级,因为我会得到&#34;执行dex&#34;错误。任何想法如何解决这一问题?我真的很困惑......

更新:我试图删除结算功能,在启动应用程序时将NoClassDefFoundError抛给项目中声明的任何类...也许我在迁移到新的gradle工具版本时错过了什么?

2 个答案:

答案 0 :(得分:0)

我也遇到了与 NoClassDefFoundError 类似的问题  我甚至尝试安装新的Android studio \ Eclipse以及最终工作的内容 我正在手动更新SDK \ build-tools文件夹到更新的文件夹。旧的没有很好的更新。 所以只需删除构建工具并尝试再次安装它,然后重新启动。

答案 1 :(得分:0)

最后我找到了......&#34;拐杖&#34; (我只是不知道在这个定义中使用什么词)

这篇文章http://frogermcs.github.io/MultiDex-solution-for-64k-limit-in-Dalvik/真的帮到了我:我下载了android studio 0.8.14,添加了com.android.support:multidex依赖关系来构建文件,然后关注&#34;治愈&#34;最后一篇文章的说明。

PS:是的,它有效,但我认为它并不是解决这个问题的真正办法。总的来说,我仍然不知道究竟是什么问题。