資料介紹
軟件簡(jiǎn)介
BoostMultiDex?是一個(gè)用于 Android 低版本設(shè)備(4.X及以下,SDK < 21)快速加載多 DEX 的解決方案,由字節(jié)跳動(dòng)的抖音/Tiktok? Android 技術(shù)團(tuán)隊(duì)出品。
相比于 Android 官方原始 MultiDex 方案,它能夠減少 80% 以上的黑屏等待時(shí)間,挽救低版本 Android 用戶的升級(jí)安裝體驗(yàn)。并且,不同于目前業(yè)界所有優(yōu)化方案,BoostMultiDex 方案是從 Android Dalvik 虛擬機(jī)底層機(jī)制入手,從根本上解決了安裝 APK 后首次執(zhí)行 MultiDex 耗時(shí)過(guò)長(zhǎng)問(wèn)題。
背景
Android低版本(4.X及以下,SDK < 21)的設(shè)備,采用的 Java 運(yùn)行環(huán)境是 Dalvik 虛擬機(jī)。它相比于高版本,最大的問(wèn)題就是在安裝或者升級(jí)更新之后,首次冷啟動(dòng)的耗時(shí)漫長(zhǎng)。這常常需要花費(fèi)幾十秒甚至幾分鐘,用戶不得不面對(duì)一片黑屏,熬過(guò)這段時(shí)間才能正常使用 APP。
這是非常影響用戶的使用體驗(yàn)的。尤其在海外,像東南亞以及拉美等地區(qū),還存有著很大量的低端機(jī)。4.X 以下低版本用戶雖然比較少,但對(duì)于抖音及 Tiktok 這樣有著億級(jí)規(guī)模的用戶的APP,即使占比10%,數(shù)目也有上千萬(wàn)。因此如果想要打通下沉市場(chǎng),這部分用戶的使用和升級(jí)體驗(yàn)是絕對(duì)無(wú)法忽視的。
這個(gè)問(wèn)題的根本原因就在于,安裝或者升級(jí)后首次 MultiDex 花費(fèi)的時(shí)間過(guò)于漫長(zhǎng)。為了解決這個(gè)問(wèn)題,字節(jié)跳動(dòng)挖掘了 Dalvik 虛擬機(jī)的底層系統(tǒng)機(jī)制,對(duì) DEX 相關(guān)處理邏輯進(jìn)行了重新設(shè)計(jì),最終推出了BoostMultiDex方案,挽救低版本Android用戶的升級(jí)安裝體驗(yàn)。
技術(shù)要點(diǎn)
BoostMultiDex方案的技術(shù)實(shí)現(xiàn)要點(diǎn)如下:
- 利用系統(tǒng)隱藏函數(shù),直接加載原始DEX字節(jié)碼,避免ODEX耗時(shí)
- 多級(jí)加載,在DEX字節(jié)碼、DEX文件、ODEX文件中選取最合適的產(chǎn)物啟動(dòng)APP
- 單獨(dú)進(jìn)程做OPT,并實(shí)現(xiàn)合理的中斷及恢復(fù)機(jī)制
更重要的是,BoostMultiDex 已經(jīng)在抖音/TikTok 億級(jí)全球用戶上驗(yàn)證通過(guò),可以說(shuō)涵蓋了各個(gè)國(guó)家、各種復(fù)雜情況的Android機(jī)型,目前業(yè)界其他大型 AP P都很難涉及到如此廣泛的規(guī)模。由此,字節(jié)跳動(dòng)也解決了各種奇怪的兼容性問(wèn)題,最大程度上確保了技術(shù)方案的穩(wěn)定性。
快速接入
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的最前面進(jìn)行初始化即可:
public class YourApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); BoostMultiDex.install(base); ... ... }
編譯構(gòu)建
如果想自行編譯打包,需要使用R16B版本的NDK以支持armeabi架構(gòu),如果不需要,可以直接在boost_multidex/build.gradle 中去掉此依賴。
執(zhí)行以下命令即可構(gòu)建本地aar包:
./gradlew :boost_multidex:assembleRelease
產(chǎn)物為boost_multidex/build/outputs/aar/boost_multidex-release.aar
性能對(duì)比
Android版本 | 廠商 | 機(jī)型 | 原始MultiDex耗時(shí)(s) | BoostMultiDex耗時(shí)(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 |
以上是在抖音上測(cè)得的實(shí)際數(shù)據(jù),APK ***有 6 個(gè) Secondary DEX,顯而易見(jiàn),BoostMultiDex 方案相比官方MultiDex 方案,其耗時(shí)有著本質(zhì)上的優(yōu)化,基本都只到原先的11%~17%之間。?也就是說(shuō)BoostMultiDex減少了原先過(guò)程80%以上的耗時(shí)。?另外其中有一個(gè)機(jī)型,在官方 MultiDex 是直接***無(wú)法啟動(dòng)的。使用 BoostMultiDex 也將使得這些機(jī)型可以煥發(fā)新生。
- 8寸安卓動(dòng)態(tài)人臉識(shí)別門(mén)禁終端
- Rslogix5000從高版到低版本轉(zhuǎn)換教程 0次下載
- 手機(jī)智能相冊(cè)軟件DwgCloudGallery安卓版 0次下載
- 安卓系統(tǒng)藍(lán)牙調(diào)試助手工具源代碼下載 8次下載
- 安卓系統(tǒng)使用教程之安卓系統(tǒng)的50個(gè)使用技巧資料免費(fèi)下載 23次下載
- Linux桌面系統(tǒng)初級(jí)教程之如何進(jìn)行軟件安裝和卸載 2次下載
- 如何使用proteus 8.0打開(kāi)低版本的電路圖 0次下載
- ADB工具(安卓 & Linux調(diào)試)下載 21次下載
- 安卓聲紋解鎖系統(tǒng) 2次下載
- Acme CAD Converter官網(wǎng)下載入口(CAD版本轉(zhuǎn)換器) 0次下載
- 安卓開(kāi)發(fā)學(xué)習(xí)教程 14次下載
- 安卓系統(tǒng)DIY教程 18次下載
- PADS_設(shè)置 0次下載
- DWG格式文件轉(zhuǎn)換工具DWGTrueConvert2007
- AD5320中文資料pdf
- CAD繪圖技巧全攻略 940次閱讀
- 鴻蒙系統(tǒng)和安卓的區(qū)別哪個(gè)好用 2022次閱讀
- harmonyos和安卓的區(qū)別 3808次閱讀
- 安卓與迪文屏的無(wú)線交互應(yīng)用 680次閱讀
- 編譯官方fridaserver或者strongFrida并替換系統(tǒng)內(nèi)置版本 3243次閱讀
- 安卓應(yīng)用層抓包通殺腳本的用法 1555次閱讀
- 一文了解MyBatis的查詢?cè)?/a> 1447次閱讀
- FP32推理TensorRT演示 1820次閱讀
- macOS如何快速連接安卓機(jī)?不如試試這個(gè)免費(fèi)的開(kāi)源工具 3879次閱讀
- 米爾科技Xilinx下載線介紹 2243次閱讀
- 如何解決AutoCAD圖形導(dǎo)入到Protel99SE時(shí)丟失曲線的問(wèn)題 5731次閱讀
- 做到這兩點(diǎn)后鴻蒙或?qū)⒊?b class="flag-6" style="color: red">安卓 2683次閱讀
- 安卓獲權(quán)獲取的技術(shù)原理 4322次閱讀
- 一文讀懂塞班系統(tǒng)和安卓系統(tǒng)的區(qū)別 3.2w次閱讀
- 車(chē)載安卓系統(tǒng)的設(shè)計(jì)方案和注意事項(xiàng) 4997次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費(fèi)
- 2AD庫(kù)封裝庫(kù)安裝教程
- 0.49 MB | 1次下載 | 免費(fèi)
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費(fèi)
- 4網(wǎng)絡(luò)安全從業(yè)者入門(mén)指南
- 2.91 MB | 1次下載 | 免費(fèi)
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 6海川SM5701規(guī)格書(shū)
- 1.48 MB | 次下載 | 免費(fèi)
- 7H20PR5電磁爐IGBT功率管規(guī)格書(shū)
- 1.68 MB | 次下載 | 1 積分
- 8IP防護(hù)等級(jí)說(shuō)明
- 0.08 MB | 次下載 | 免費(fèi)
本月
- 1貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說(shuō)明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開(kāi)發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開(kāi)發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費(fèi)
- 8蘋(píng)果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論