Android 解决方法数超上限遇到的问题
2015-11-02 01:01
344 查看
工程中引入了太多的jar包,最终导致eclipse 编译报错,方法数超出上限,废了半天的时间最终还是解决了,但是不得不把项目迁移到Android studio 的环境下,eclipse下尝试了网上的n种方法,都没有得到解决,下面简单的说一下gradle 配置多dex打包过程中应该注意的一些问题:
1.UNEXPECTED TOP-LEVEL EXCEPTION
对于dex 的--multi-dex 选项设置与预编译的library工程有冲突,因此如果你的应用中包含引用的lirary工程,需要将预编译设置为false:
在dexOptions中有一个字段用来增加java堆内存大小:
3.将 android-support-multdex.jar包放到libs目录下进行编译,出现如下错误:
在gradle脚本的dependencies中加入compile
'com.android.support:multidex:1.0.0',并从工程的libs目录下删除multidex包,gradle会自动去sdk目录下面找(注意并不是去repositories下载,repositories中是没有这个包的,所以我们需要做第一步); 再次编译就可以正常工作
4.编译通过后,运行不起来,提示某些类库中的so找不到,可是类库中的so明明已经正常引用了
解决方法:
将类库中so文件放到主工程的响应的目录下,重新进行编译
1.UNEXPECTED TOP-LEVEL EXCEPTION
Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.internal.LoggedErrorException: Failed to run command: $ANDROID_SDK/build-tools/android-4.4W/dx --dex --num-threads=4 --multi-dex ... Error Code: 2 Output: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Library dex files are not supported in multi-dex mode at com.android.dx.command.dexer.Main.runMultiDex(Main.java:322) at com.android.dx.command.dexer.Main.run(Main.java:228) at com.android.dx.command.dexer.Main.main(Main.java:199) at com.android.dx.command.Main.main(Main.java:103)
对于dex 的--multi-dex 选项设置与预编译的library工程有冲突,因此如果你的应用中包含引用的lirary工程,需要将预编译设置为false:
android { // ... dexOptions { preDexLibraries = false } }2.OutOfMemoryError: Java heap space
UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: Java heap space
在dexOptions中有一个字段用来增加java堆内存大小:
android { // ... dexOptions { javaMaxHeapSize "2g" } }
3.将 android-support-multdex.jar包放到libs目录下进行编译,出现如下错误:
Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: android/support/multidex/MultiDex.class解决方法:
在gradle脚本的dependencies中加入compile
'com.android.support:multidex:1.0.0',并从工程的libs目录下删除multidex包,gradle会自动去sdk目录下面找(注意并不是去repositories下载,repositories中是没有这个包的,所以我们需要做第一步); 再次编译就可以正常工作
4.编译通过后,运行不起来,提示某些类库中的so找不到,可是类库中的so明明已经正常引用了
解决方法:
将类库中so文件放到主工程的响应的目录下,重新进行编译
相关文章推荐
- AndroidListView工作理完全解析 带你从源码的角度彻底理解
- AndroidListView工作理完全解析 带你从源码的角度彻底理解
- Android动画
- android添加触摸事件
- Android 开发中,有哪些坑需要注意?
- Android开发涉及有点概念&相关知识点(待写)
- 在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案
- android sqlite应用优化(资料整理)
- android退出应用程序
- Android 下获取手机通讯录信息
- AutoHomeRefreshListView仿汽车之家下拉刷新 《IT蓝豹》
- Android之ImageSwitcher控件概述
- 安卓开发中EditText的焦点改变处理(获取焦点和失去焦点交互变化)
- Android Socket 发送广播包的那些坑
- Android-setContentView的二次理解
- Android中监听ListView滑动到底部
- 反编译Android 语法
- android串口通信——android-serialport-api
- android串口通信——android-serialport-api
- Android学习路线指南