Android MultiDex – 内部工作的问题

前端之家收集整理的这篇文章主要介绍了Android MultiDex – 内部工作的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近发现了 Android的新MultiDex功能,用于处理超过65,000个参考的应用程序.见: https://developer.android.com/tools/building/multidex.html

有人可以帮助我了解以下问题:

1)Gradle构建插件如何确定将主要dex文件(classes.dex)与辅助dex文件放在一起?根据该文档,有一些事情需要在主要的dex,但它没有给出任何例子.所有活动都需要在主要dex文件中?

引用文本:

There are complex requirements regarding what classes are needed in
the primary dex file when executing in the Dalvik runtime. The Android
build tooling updates handle the Android requirements,but it is
possible that other included libraries have additional dependency
requirements including the use of introspection or invocation of Java
methods from native code. Some libraries may not be able to be used
until the multidex build tools are updated to allow you to specify
classes that must be included in the primary dex file.

2)当仅针对Android API Level 21(Android L)及以上版本构建时,Gradle Build Plugin有不同的行为.它说它更快,因为它将应用程序的每个模块(包括依赖项)构建为单独的dex文件,这通常被称为pre-dexing. Android中的模块的定义是什么?这是这里提到的Java库,Android库和Android应用程序模块:http://developer.android.com/sdk/installing/studio-build.html#projectModules?远程或本地二进制依赖关系(例如:Jars)作为单独的模块计数,因此可以放入不同的dex文件,还是根据它们被包含在模块中?

解决方法

1)Gradle插件在内部使用Proguard在中间体/ multi-dex构建文件夹中创建两个jar文件.一个将是主要的dex,其余的将分散在dex 2,3等.

收集{variant} MultiDexComponents任务负责为proguard创建保留文件,您可以在上述文件夹的变体特定子目录中看到此文件和其他proguard参数.希望这将是长期可定制的.

目前还有一个与1.0.0-rc1的毕业插件(https://code.google.com/p/android/issues/detail?id=80741)中的测试项目相关的错误.有一些小的变化,我发布的解决方法也可以用来添加自己的条目到保持列表(从而确保您的类最终在主要dex)现在.

2)模块指的是从Gradle角度来看的模块,但这些模块确实可以在您链接到的列表中提到的不同的项目.如果您使用-info作为标志从命令行执行预棒棒糖毕业生,您可以看到传递给dx的所有dex文件. (请注意,这不应该是一个多重启用的构建,或者一个preDexLibraries = false).

原文链接:https://www.f2er.com/android/311920.html

猜你在找的Android相关文章