电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>BoostMultiDex低版本安卓快速加载MultiDex

BoostMultiDex低版本安卓快速加载MultiDex

2022-06-14 | zip | 0.28 MB | 次下载 | 免费

资料介绍

授权协议 Apache 2.0
开发语言 Java C/C++
软件类型 开源软件
所属分类 手机/移动开发、 手机开发工具

软件简介

BoostMultiDex 是一个用于 Android 低版本设备(4.X及以下,SDK < 21)快速加载多 DEX 的解决方案,由字节跳动的抖音/Tiktok  Android 技术团队出品。

相比于 Android 官方原始 MultiDex 方案,它能够减少 80% 以上的黑屏等待时间,挽救低版本 Android 用户的升级安装体验。并且,不同于目前业界所有优化方案,BoostMultiDex 方案是从 Android Dalvik 虚拟机底层机制入手,从根本上解决了安装 APK 后首次执行 MultiDex 耗时过长问题。

背景

Android低版本(4.X及以下,SDK < 21)的设备,采用的 Java 运行环境是 Dalvik 虚拟机。它相比于高版本,最大的问题就是在安装或者升级更新之后,首次冷启动的耗时漫长。这常常需要花费几十秒甚至几分钟,用户不得不面对一片黑屏,熬过这段时间才能正常使用 APP。

这是非常影响用户的使用体验的。尤其在海外,像东南亚以及拉美等地区,还存有着很大量的低端机。4.X 以下低版本用户虽然比较少,但对于抖音及 Tiktok 这样有着亿级规模的用户的APP,即使占比10%,数目也有上千万。因此如果想要打通下沉市场,这部分用户的使用和升级体验是绝对无法忽视的。

这个问题的根本原因就在于,安装或者升级后首次 MultiDex 花费的时间过于漫长。为了解决这个问题,字节跳动挖掘了 Dalvik 虚拟机的底层系统机制,对 DEX 相关处理逻辑进行了重新设计,最终推出了BoostMultiDex方案,挽救低版本Android用户的升级安装体验。

技术要点

BoostMultiDex方案的技术实现要点如下:

  1. 利用系统隐藏函数,直接加载原始DEX字节码,避免ODEX耗时
  2. 多级加载,在DEX字节码、DEX文件、ODEX文件中选取最合适的产物启动APP
  3. 单独进程做OPT,并实现合理的中断及恢复机制

更重要的是,BoostMultiDex 已经在抖音/TikTok 亿级全球用户上验证通过,可以说涵盖了各个国家、各种复杂情况的Android机型,目前业界其他大型 AP P都很难涉及到如此广泛的规模。由此,字节跳动也解决了各种奇怪的兼容性问题,最大程度上确保了技术方案的稳定性。

快速接入

build.gradle的dependencies中添加依赖:

dependencies {
... ...
    // For specific version number, please refer to app demo
    implementation 'com.bytedance.boost_multidex:boost_multidex:${ARTIFACT_VERSION}'
}

与官方MultiDex类似,在Application.attachBaseContext的最前面进行初始化即可:

public class YourApplication extends Application {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        
        BoostMultiDex.install(base);
        
... ...
    }

编译构建

如果想自行编译打包,需要使用R16B版本的NDK以支持armeabi架构,如果不需要,可以直接在boost_multidex/build.gradle 中去掉此依赖。

执行以下命令即可构建本地aar包:

./gradlew :boost_multidex:assembleRelease

产物为boost_multidex/build/outputs/aar/boost_multidex-release.aar

性能对比

Android版本 厂商 机型 原始MultiDex耗时(s) BoostMultiDex耗时(s)
4.4.2 LG LGMS323 33.545 5.014
4.4.4 MOTO G 45.691 6.719
4.3 Samsung GT-N7100 24.186 3.660
4.3.0 Samsung SGH-T999 30.331 3.791
4.2.2 HUAWEI Hol-T00 *** 3.724
4.2.1 HUAWEI G610-U00 36.465 4.981
4.1.2 Samsung I9100 30.962 5.345

以上是在抖音上测得的实际数据,APK ***有 6 个 Secondary DEX,显而易见,BoostMultiDex 方案相比官方MultiDex 方案,其耗时有着本质上的优化,基本都只到原先的11%~17%之间。 也就是说BoostMultiDex减少了原先过程80%以上的耗时。 另外其中有一个机型,在官方 MultiDex 是直接***无法启动的。使用 BoostMultiDex 也将使得这些机型可以焕发新生。

 

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1DH251全极型霍尔效应传感器中文手册
  2. 0.86 MB   |  3次下载  |  免费
  3. 2RK3506G参考设计
  4. 0.97 MB   |  2次下载  |  3 积分
  5. 3英飞凌ICL5102 PFC+LLC第二代谐振控制器规格书
  6. 0.84 MB   |  1次下载  |  免费
  7. 451单片机交通灯仿真
  8. 0.16 MB   |  1次下载  |  2 积分
  9. 5DH281L全极型霍尔效应传感器中文手册
  10. 0.71 MB   |  1次下载  |  免费
  11. 6水流量计手册
  12. 2.4MB   |  1次下载  |  免费
  13. 7LMZ315x0电源模块评估模块用户指南
  14. 850.76KB   |  次下载  |  免费
  15. 8LMZ12003 SIMPLE SWITCHER电源模块评估模块用户指南
  16. 660.49KB   |  次下载  |  免费

本月

  1. 1XL4015+LM358恒压恒流电路图
  2. 0.38 MB   |  163次下载  |  1 积分
  3. 2PCB布线和布局电路设计规则
  4. 0.40 MB   |  73次下载  |  免费
  5. 3开关电源设计原理手册
  6. 1.83 MB   |  24次下载  |  免费
  7. 4智能门锁原理图
  8. 0.39 MB   |  15次下载  |  免费
  9. 5elmo直线电机驱动调试细则
  10. 4.76 MB   |  10次下载  |  6 积分
  11. 6OAH0428最新规格书(中文)
  12. 2.52 MB   |  10次下载  |  7 积分
  13. 7BQ76952评估模块
  14. 3.67MB   |  7次下载  |  免费
  15. 8PC1013三合一快充数据线充电芯片介绍
  16. 1.03 MB   |  7次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935115次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420061次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233084次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191367次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183334次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73806次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65985次下载  |  10 积分