首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

闲聊MultiDex

MultiDex 是什么? 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。...原理 类加载机制系列3——MultiDex原理解析 Android使用Multidex突破64K方法数限制原理解析 简单地来说,MultiDex 做的事情就是: 解压得到 dex 并进行 dexOpt...Multidex.install所引发的合并耗时操作,是在前台进程的异步任务中执行的,所以没有 ANR 的风险。...在 Facebook 的这个方案基础上,其实你不知道MultiDex到底有多坑 给出了一个优化后的方案。...Reference 配置方法数超过 64K 的应用 类加载机制系列3——MultiDex原理解析 Android使用Multidex突破64K方法数限制原理解析 其实你不知道MultiDex到底有多坑

91910

闲聊MultiDex

MultiDex 是什么? 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。...原理 类加载机制系列3——MultiDex原理解析 Android使用Multidex突破64K方法数限制原理解析 简单地来说,MultiDex 做的事情就是: 解压得到 dex 并进行 dexOpt...Multidex.install所引发的合并耗时操作,是在前台进程的异步任务中执行的,所以没有 ANR 的风险。...在 Facebook 的这个方案基础上,其实你不知道MultiDex到底有多坑 给出了一个优化后的方案。 ?...Reference 配置方法数超过 64K 的应用 类加载机制系列3——MultiDex原理解析 Android使用Multidex突破64K方法数限制原理解析 其实你不知道MultiDex到底有多坑

1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Multidex记录二:缺陷&解决

    记录Multidex缺陷&解决 为什么要用记录呢,因为我从开始接触Android时我们的项目就在65535的边缘。不久Google就出了multidex的解决方案。...我们也已经接入multidex好多年,但我自己还没有接入,所以本博文只是作者自己对multidex接入中产生的问题以及解决方案做理解和记录。...Multidex的缺陷 Multidex介绍和使用 中已经说了一部分multidex的局限性: 1、在冷启动时因为需要安装DEX文件,如果DEX文件过大时,处理时间过长,很容易引发ANR(Application...此时在mini进程中Multidex可能还未完成安装(我们项目目前一共3个dex,Multidex的安装耗时大概20s)。...我们可以一直轮询needWait,直到Multidex加载完成。

    1.1K10

    Multidex记录一:介绍和使用

    记录Multidex介绍和使用 为什么要用记录呢,因为我从开始接触Android时我们的项目就在65535的边缘。不久Google就出了multidex的解决方案。...我们也已经接入multidex好多年,但我自己还没有接入,所以本博文只是作者自己对multidex接入整理记录其中大部分来源于Google官网。 ?...要想绕过这一限制,您可以使用multidex,然后管理对其他 DEX 文件及其所包含代码的访问。...现在的Android设备市场还有大部分的Android5.0一下的手机,所以我们要使用multidex来解决应用在这些设备上的65535。...例如,您可以创建一个名为 multidex-config.txt 的文件,如下所示: com/example/MyClass.class com/example/MyOtherClass.class 然后

    1.7K10

    MultiDex(一)之源码解析

    Multidex在构建打包阶段将Class拆分到多个Dex,使之不超过单Dex最大方法数的限制;这样打包就不会失败了。...具体的使用指南可以异步官方文档; 二、Multidex工作流程 在分析源码之前,我们先来看一下MultiDex的工作流程,对它有一个初步的认识; ?...三、源码分析 MultiDex入口:MultiDex.install(); ? ?...跟随源码一步步揭开了Multidex的神秘面纱,再回头看Multidex的工作流程图,就更加清晰明了。 四、问题 1、clearOldDexDir(context)是干嘛的?...②ANR的问题:从以上MultiDex的工作流程可以看到:MultiDex工作在主线程,而Dex的提取与DexOpt的过程都是耗时的操作,所以ANR的问题是必然存在;而且业务量越大,拆分出来的Dex越多

    79420

    MultiDex(三)之异步加载优化

    一、前言 在上一篇文章《Multidex(二)之Dex预加载优化》中我们提到主进程中直接开启一个子线程执行MultiDex的工作确实可以避免ANR的问题,然而此时主进程中调用到的类,可能会因为SecondaryDex...本文就带你实战MultiDex的异步加载优化。 二、分析 既然我们要做的是异步加载优化,那毋庸置疑MultiDex.install是要放在子线程了,这步简单。...三、上代码,Show The Code Application异步执行Multidex.install; ? 干预打包流程,保证入口类以及入口类的引用类都放在主Dex中。 ?...鉴于问题1中描述的缺点,所以更推荐上一篇文章《Multidex(二)之Dex预加载优化》的方案,使用方便简单。...以上就是MultiDex系列文章的全部三篇,对MultiDex的原理及优化方案进行了分析。

    1.2K50

    Multidex(二)之Dex预加载优化

    一、前言 在Multidex(一)之源码解析中我们介绍到MultiDex极有可能出现ANR(Application No Response)的问题,秒秒钟卡死我们的应用,用户肯定忍不了要怒卸载啊!...那么如何对MultiDex这个方案做优化让它变成好同志呢? 本文就带你实战MultiDex的预加载优化。...二、分析 Multidex(一)之源码解析中分析过MultiDex第一次加载出现ANR的原因是因为提取Dex以及DexOpt这两个过程都是耗时的操作,而且他们还都发生在主进程。...可以通过Log看到,在优化进程中Dex的提取以及Dexopt的操作耗时近4秒,而在主进程的第二次执行则耗时16毫秒,耗时发生在优化进程中的线程中,主进程实际执行MultiDex.install的时候耗时极其短暂...3、在优化的进程中只是开启了一个线程提前做了MultiDex的工作,那为什么不直接在主进程中开启一个子线程做同样工作呢? Good Question,不愧是善于思考的程序猿!

    1.3K50

    面试官:今日头条启动很快,你觉得可能是做了哪些优化?

    2.2.2 MultiDex 原来这么耗时 在Android 4.4的机器打印MultiDex.install(context)耗时如下: MultiDex.install 耗时:1320 平均耗时1秒以上...老规矩,分析一下MultiDex原理~ 2.2.3 MultiDex 原理 下面看下MultiDex的install 方法做了什么事 public static void install(Context...{ //5.0 以上VM基本支持多dex,啥事都不用干 Log.i("MultiDex", "VM has multidex support, MultiDex support...中加载到目标类,经过分析后最终MultipDex原理图如下:[MultiDex原理] 2.2.6 MultiDex 优化(两种方案) 知道了MultiDex原理之后,可以理解install过程为什么耗时...MultiDex优化总结 方案1:直接在闪屏页开个子线程去执行MultiDex逻辑,MultiDex不影响冷启动速度,但是难维护。

    1K30

    Android中方法数超限问题与启动优化详解

    但是,当方法数越来越多,这个方法也会解决不了问题,这个时候,就要用到 Google 官方给出的方案 MultiDex 了。...MultiDex 解决方案 一、 如果你的 minSdkVersion = 21,那么只要在模块的 build.gradle 中添加: android { defaultConfig { ......(this); } 谷歌multiDex存在的问题 虽然谷歌的分包方案很简单,但是效果并不是那么好,谷歌本身也枚举了分包方案的缺点: 如果在主线程中执行MultiDex.install,加载second...multidex可能会造成不同依赖项目间的dex文件函数相互调用,找不到方法 启动优化 官方的解决方案虽然简单,但是也存在一定的局限。...大概的思路就是,新开一个进程来执行 Multidex.install() 方法。

    67930
    领券