6

谁能告诉我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
4

1 回答 1

5

您遇到了不同的大小限制(LinearAlloc),根据这个错误,multi-dex 无法解决这个问题:

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

来自该错误中的评论 #7:

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

此外,对于大多数应用程序,迁移到 multidex 只会有助于解决安装的线性分配限制。但是应用程序在执行时仍然会因相同的限制而崩溃。我知道 multidex 可以帮助使用 linearalloc 的唯一工作用例是当 apk 不包含一个应用程序但在单独的进程中运行的不同部分时。

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

如何避免LinearAlloc Exceeded Capacity错误android

于 2014-12-03T18:59:16.717 回答