日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

当我们在谈论multidex65535时,我们在谈论什么

發(fā)布時(shí)間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 当我们在谈论multidex65535时,我们在谈论什么 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文來(lái)自網(wǎng)易云社區(qū)


作者:鄭文


首先我們并不在討論車牌號(hào).本文盡量避免談?wù)撝貜?fù)的技術(shù)點(diǎn),只探討一下multidex提供給我們的技術(shù)啟示。

原理

multidex技術(shù)原理可以分成兩個(gè)部分:

  • 在app啟動(dòng)時(shí),通過(guò)Multidex.install api,擴(kuò)展ClassLoader的dexElements數(shù)組來(lái)存儲(chǔ)所有dex,這個(gè)流程會(huì)根據(jù)android sdk版本的不同做不同的處理,整個(gè)流程完全通過(guò)反射完成。

  • 編譯過(guò)程中的分包機(jī)制,將app中的class以某種方式將class分布在多個(gè)dex中

Multidex.install

從multidex的原理,很容易想起目前比較流行的一個(gè)代碼熱修復(fù)方案策略。安卓App熱補(bǔ)丁動(dòng)態(tài)修復(fù)技術(shù)介紹 ,qzone的技術(shù)思路在社區(qū)誕生了很多技術(shù)框架,其中知名度最高的就是Nuwa。但客觀的說(shuō),nuwa這個(gè)項(xiàng)目是完全達(dá)不到產(chǎn)品release的要求。在調(diào)研完所有同技術(shù)路線開源框架后,我們決定造個(gè)能應(yīng)用在線上產(chǎn)品的輪子。

我們的解決方案

  • 使用Transform API進(jìn)行bytecode的植入,支持高版本gradle

  • 編譯流程的優(yōu)化,減少了人工干預(yù)的過(guò)程

  • 支持補(bǔ)丁包的簽名驗(yàn)證,避免被惡意hook

  • 兼容網(wǎng)易安全部門的加殼方案

  • 支持ART模式:在art模式下,應(yīng)用補(bǔ)丁包可能導(dǎo)致地址錯(cuò)亂,解決方案是將直接引用修改class的相關(guān)類都打包進(jìn)行補(bǔ)丁包,這是目前其他開源方案沒(méi)有做的

MultiDex存在的問(wèn)題

MultiDex機(jī)制的出現(xiàn)本身是為了避免出現(xiàn)app 65535問(wèn)題的出現(xiàn),但隨著業(yè)務(wù)邏輯的增長(zhǎng),以及不合理的模塊劃分,導(dǎo)致main dex的方法數(shù)也超出了65535,這就導(dǎo)致了main dex capacity exceeded異常。

同時(shí),Multidex的接入額外還會(huì)對(duì)app的啟動(dòng)性能造成影響。Multidex在install時(shí)需要加載dex,首次啟動(dòng)時(shí)還需要做odex的轉(zhuǎn)換,而這些都是在ui主線程中完成。 根據(jù) Carlos Sessa的測(cè)試,啟用multidex后,4.4或以下的設(shè)備,app的啟動(dòng)時(shí)間平均會(huì)增加15%的時(shí)間,更嚴(yán)重的情況,甚至在啟動(dòng)時(shí)候會(huì)出現(xiàn)了黑屏。

目前部分app采取的策略是,放棄掉Multidex的,而轉(zhuǎn)為插件化的架構(gòu)。通過(guò)將非核心模塊的lazy load,來(lái)達(dá)到啟動(dòng)速度的優(yōu)化,但我們需要明確的是,并不是所有app都似乎插件化架構(gòu),為了實(shí)現(xiàn)啟動(dòng)加速或熱更新將本耦合的業(yè)務(wù)邏輯硬生生拆解才是本末倒置。

解決方案

Multidex異步化

在Android的性能優(yōu)化中,最常見的思路就是異步化,減少UI線程的工作。在應(yīng)用的交互層面上,app啟動(dòng)時(shí),幾乎所有app都會(huì)有一個(gè)SplashActivity。在界面上展示歡迎頁(yè),在后臺(tái)進(jìn)行初始化的業(yè)務(wù)邏輯。這就給我們一個(gè)啟發(fā),我們可以將系統(tǒng)的初始化邏輯,延遲到我們的業(yè)務(wù)初始化時(shí)間點(diǎn)上。

更加具體的方式是,我們可以將Multidex.install異步化,保證主線程的正常進(jìn)行,待加載完成后通知SplashActivity跳轉(zhuǎn)到真正的業(yè)務(wù)主界面。

在MultiDex加載的異步化之后,我們可以進(jìn)行第二步:main dex大小的精簡(jiǎn)。

Multidex分包原理介紹

Multidex會(huì)在入口Application的attachBaseContext,加載second dex,因此multidex分包的基本原則是:保證app啟動(dòng)需要的class放置在main dex上。在gradle 1.5以上,multidex通過(guò)CreateManifestKeepList和MutidexTransform完成,分包過(guò)程可以分為三步:

  • 生成manifest_keep.txt

CreateManifestKeepList會(huì)解析出AndroidManifest.xml中所有的組件類:包括Activity、Service、Receiver以及ContentProvider,這些類將會(huì)和Application入口類一起放在build/intermediates/multi-dex/{flavor}/{buildType}/manifest_keep.txt中

  • 生成maindexlist.txt文件

MutidexTransform會(huì)查找manifest_keep.txt中所有類的直接引用類,具體的方式是遍歷類的所有字段類以及方法,查看方法的參數(shù)和返回值的類型,將其放保存在maindexlist.txt

  • 生成main dex

轉(zhuǎn)載于:https://www.cnblogs.com/163yun/p/9565300.html

總結(jié)

以上是生活随笔為你收集整理的当我们在谈论multidex65535时,我们在谈论什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一本大道久久 | 亚洲婷婷久久综合 | 一区二区三区国产在线观看 | 欧美人性生活视频 | 中文字幕激情小说 | 亚洲av无码久久忘忧草 | 深夜网站在线观看 | 九九精品在线视频 | 国产精品视频看看 | 久久美 | 欧美性猛交ⅹxx乱大交 | 337p亚洲欧洲色噜噜噜 | 免费看国产视频 | 久久亚洲一区二区 | 伊人在线 | xxxx日本少妇 | 欧美在线中文 | 一区视频 | av大片网站 | 人妖被c到高潮欧美gay | 老司机午夜av | 青草伊人久久 | 97xxx| 韩国三级黄色 | 免费看黄色一级大片 | 亚洲国产免费视频 | 日日干日日摸 | 最近高清中文在线字幕在线观看 | av一区在线播放 | 精品免费观看 | 色网站观看| 亚州av综合色区无码一区 | 欧美日本二区 | 欧美少妇一级片 | 香蕉视频日本 | 麻豆精品国产传媒av | 青青成人在线 | 欧美人体一区二区 | 欧美精品一区二区三区久久久 | 日本夜夜操 | 一级做a免费 | 免费av网站大全 | 少妇性生活视频 | 欧美区在线观看 | 欧美一级性生活 | 国产乱人对白 | 黄色激情视频网站 | 一级伦理农村妇女愉情 | 久久成年人视频 | h网站在线播放 | mm131美女视频 | 女同性恋一区二区三区 | 亚洲石原莉奈一区二区在线观看 | 日韩伦乱 | 亚洲成人一区在线观看 | 亚洲视频在线播放 | 久久第一页 | 欧美日韩一区二区三区免费 | 游戏涩涩免费网站 | 少妇一级淫片免费 | 玉女心经在线看 | 国产又爽又黄又嫩又猛又粗 | 久久婷婷五月国产色综合激情 | 亚洲av综合色区无码一区爱av | 日韩久久一区 | 成人av免费在线观看 | 在线观看亚洲国产 | a级黄色网址 | 极品尤物在线观看 | 69人妻一区二区三区 | 涩涩视频在线观看免费 | 爱爱一级| 国产冒白浆 | 精品国自产拍在线观看 | 亚洲精品二 | 日本中文字幕不卡 | 久久免费一区 | 日日插夜夜爽 | 欧美日韩在线一区二区 | 国产毛片久久久 | 咪咪成人网 | 97精品久久 | 国产真实生活伦对白 | 超碰97av| 好色视频tv | 秋霞在线视频 | 青青草手机在线视频 | 噜噜啪啪 | 秋霞综合网 | 欧美成人tv | 国产日韩欧美综合在线 | 香蕉视频在线网址 | 中文字幕第5页 | 男女日日 | 中文字幕在线第一页 | 欧美日韩一区二区三区不卡视频 | 大陆女明星乱淫合集 | 国产精品无码AV | 国产一区二区三区四区五区美女 |