我正在开发一个需要多个库的Android应用程序(适用于Facebook,Google Maps v2和Quickblox等),导致方法数量溢出超过64K限制:
Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Run Code Online (Sandbox Code Playgroud)
由于我不能没有任何这些库,我寻找方法限制bug的解决方案.我发现了一个来自Android开发者的热门博客文章,推荐使用源代码部门.(我正在谈论的博客条目可以在这里找到:http://android-developers.blogspot.com.es/2011/07/custom-class-loading-in-dalvik.html).我一直在尝试这个解决方案但没有成功.
我现在的问题是,最大量的代码不在我的应用程序本身,但在所需的库中,所以我必须在我必须在我的应用程序中加载的不同dex文件中传播这些库.我对Ant的了解非常有限,我想知道的是我应该在build.xml文件中编写什么来使dex复制我想要的每个库:
<!-- Primary dex to include my source code and some libraries. -->
<copy todir="${out.classes.absolute.dir}.1" >
<fileset dir="${out.classes.absolute.dir}" >
...
</fileset>
</copy>
<!-- Secondary dex to include some other libraries. -->
<copy todir="${out.classes.absolute.dir}.2" >
<fileset dir="${out.classes.absolute.dir}" >
...
</fileset>
</copy>
Run Code Online (Sandbox Code Playgroud)
任何帮助都会得到真正的赞赏.在此先感谢,亲切的问候!
我正在尝试将Crashlytics添加到我的Android应用程序中,但是当我按下Eclipse中的"运行"按钮时,由于NoClassDefFoundError,我无法运行它.
我使用Crashlytics插件安装了ADT版本的Eclipse,然后运行了Crashlytics助手.当我到达"构建并运行您的应用程序以检查Crashlytics是否正常"时,我得到以下堆栈跟踪:
06-19 00:18:53.647: E/AndroidRuntime(25400): java.lang.NoClassDefFoundError: com.crashlytics.android.Crashlytics
06-19 00:18:53.647: E/AndroidRuntime(25400): at <app_package>.gui.MainMenuActivity.onCreate(MainMenuActivity.java:24)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.app.Activity.performCreate(Activity.java:5206)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.app.ActivityThread.access$600(ActivityThread.java:140)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.os.Handler.dispatchMessage(Handler.java:99)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.os.Looper.loop(Looper.java:137)
06-19 00:18:53.647: E/AndroidRuntime(25400): at android.app.ActivityThread.main(ActivityThread.java:4898)
06-19 00:18:53.647: E/AndroidRuntime(25400): at java.lang.reflect.Method.invokeNative(Native Method)
06-19 00:18:53.647: E/AndroidRuntime(25400): at java.lang.reflect.Method.invoke(Method.java:511)
06-19 00:18:53.647: E/AndroidRuntime(25400): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
06-19 00:18:53.647: E/AndroidRuntime(25400): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
06-19 00:18:53.647: …Run Code Online (Sandbox Code Playgroud)