Android 解决方法数超上限遇到的问题

工程中引入了太多的jar包,最终导致eclipse 编译报错,方法数超出上限,废了半天的时间最终还是解决了,但是不得不把项目迁移到Android studio 的环境下,eclipse下尝试了网上的n种方法,都没有得到解决,下面简单的说一下gradle 配置多dex打包过程中应该注意的一些问题:

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文件放到主工程的响应的目录下,重新进行编译





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值