我最近从Android中发现了新的MultiDex功能,用于处理具有超过65,000个引用的应用程序。请参阅:https://developer.android.com/tools/building/multidex.htmlAndroid MultiDex - 关于内部工作的问题
有人可以帮助我了解以下问题:
1)如何在摇篮建立插件决定要放什么东西在主DEX文件(classes.dex)与二级DEX文件?基于文档,某些东西需要在主要的dex中,但它没有给出任何示例。所有活动都需要在主要的dex文件中吗?
引用的文字:
有关于在Dalvik运行时执行时 需要什么类的主DEX文件复杂的要求。 Android 构建工具更新处理Android要求,但它是 其他包含的库可能具有附加依赖关系 要求,包括使用内省或调用本地代码的Java 方法。有些库可能无法使用 ,直到multidex构建工具更新为允许您指定 必须包含在主dex文件中的类。
2)当仅针对Android API Level 21(Android L)及更高版本构建时,Gradle Build Plugin中存在不同的行为。它说速度要快得多,因为它“将应用程序的每个模块(包括依赖项)构建为单独的dex文件,这通常称为预分离。” Android中模块的定义是什么?这是这里提到的Java库,Android库和Android应用程序模块:http://developer.android.com/sdk/installing/studio-build.html#projectModules?远程或本地二进制相关性(例如:Jars)是否作为单独的模块计算,从而被放入不同的dex文件中,还是根据它们被包含在模块中?
很棒的回答。基于collect {variant} MultiDexComponents任务,活动是否始终保留在主要dex中? – AnDev123 2014-11-25 17:02:38
还有一个问题:此功能是否尝试获取低于极限的方法数量,以便二级dex文件中的方法尽可能小?又名它删除的方法数量是否明智? – AnDev123 2014-11-25 18:13:47
它只存储*第一个jar/dex中保留列表中指定的类。在我的保存文件中,我可以看到这至少是所有活动,服务,BackupAgents和您的应用程序以及注释。 – thoutbeckers 2014-11-25 18:22:31