Android 2.3的Multidex(API 9)

时间:2014-12-03 17:32:30

标签: android android-studio multidex android-multidex

有人能告诉我android 2.3中是否支持multi dex?

我已经四处寻找,但我无法找到相关信息。 我的项目具有与此类似的配置:https://github.com/mustafa01ali/MultiDexTest

项目构建没有问题,但最终的apk无法安装在2.3或更低版本的设备中。

安装时我收到错误

Failure [INSTALL_FAILED_DEXOPT]
在Android Studio中

,它出现在logcat中:

E/dalvikvm﹕ LinearAlloc exceeded capacity (5242880), last=1384
W/installd﹕ DexInv: --- END '/data/app/xxx.apk' --- status=0x000b, process failed
E/installd﹕ dexopt failed on '/data/dalvik-cache/data@app@xxx.apk@classes.dex' res = 11

1 个答案:

答案 0 :(得分:5)

你正在达到一个不同的大小限制(LinearAlloc),根据这个bug,multi-dex无法解决这个问题:

https://code.google.com/p/android/issues/detail?id=78035

来自该bug的评论#7:

  

dx中已有一个允许强制生成的选项   较小的dex文件:   --set-max-idx-number =不幸的是,更改默认值不是解决方案,因为可以达到linearAlloc限制   不同的级别取决于类层次结构和其他   标准。

     

此外,对于大多数应用程序,转移到multidex只会有所帮助   解决安装的linearalloc限制。但是   应用程序仍然会在执行时遇到相同的限制。该   只有工作用例,我知道multidex可以帮助linearalloc   当apk不包含一个应用程序但不同的部分时   在单独的过程中运行。

至少从长远来看,目前尚不清楚你能做些什么来解决这个限制;您可能需要简化您的应用。这里有另一个StackOverflow问题,其中包含一些可能让您启动并运行的信息和一些解决方法,至少在一段时间内:

How to avoid LinearAlloc Exceeded Capacity error android