65536問題理解v4

com.android.dex.DexIndexOverflowException
首先出現(xiàn)這個(gè)問題場景:當(dāng)Android應(yīng)用工程引用方法數(shù)>65536時(shí)唯笙,gradle構(gòu)建時(shí)會(huì)報(bào)65536問題螟蒸,肯定是gradle構(gòu)建任務(wù)時(shí)做了方法數(shù)的檢測。大牛們都去翻開構(gòu)建源碼做了驗(yàn)證 method id not in [0,0xffff]崩掘。

無論你的應(yīng)用只運(yùn)行在Dalvik上還是Art上七嫌,都只能打包成dex文件。雖然應(yīng)用安裝之后苞慢,dex會(huì)被優(yōu)化成其他格式的文件诵原。

Dalvik Executable 規(guī)范將可在單個(gè) DEX 文件內(nèi)可引用的方法總數(shù)限制在 65,536,其中包括 Android 框架方法挽放、庫方法以及您自己代碼中的方法绍赛。在計(jì)算機(jī)科學(xué)領(lǐng)域內(nèi),術(shù)語[*千(簡稱 K)*](https://en.wikipedia.org/wiki/Kilo-)表示 1024(或 2^10)辑畦。由于 65,536 等于 64 X 1024吗蚌,因此這一限制也稱為“64K 引用限制”。

而且在dalvik的虛擬機(jī)實(shí)現(xiàn)里運(yùn)行時(shí)里方法引用索引數(shù)是 16 位纯出。這一點(diǎn)官方davlik指令有說明


image.png

Dalvik虛擬機(jī)和Art虛擬機(jī)安裝過程中的區(qū)別
Apk在Dalvik上安裝時(shí)蚯妇,僅加載優(yōu)化一個(gè)dex文件(class.dex)成odex文件
Apk在Art上安裝時(shí),會(huì)加載多個(gè)dex文件暂筝,合并優(yōu)化成oat文件
所以要繞過64k應(yīng)用限制箩言,首先需要在構(gòu)建打包過程中將代碼分成多個(gè)小于64k的文件
在dalvik上需要解決的是如何在運(yùn)行時(shí)加載其他dex文件
而在art上則不需要擔(dān)心,它會(huì)自動(dòng)處理合并所有dex文件

各路大神的gradle構(gòu)建源碼探究過程移步

巴神的Android 上為啥會(huì)有65536的限制乖杠,解釋下原因

參考:配置方法數(shù)超過 64K 的應(yīng)用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末分扎,一起剝皮案震驚了整個(gè)濱河市澄成,隨后出現(xiàn)的幾起案子胧洒,更是在濱河造成了極大的恐慌,老刑警劉巖墨状,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卫漫,死亡現(xiàn)場離奇詭異,居然都是意外死亡肾砂,警方通過查閱死者的電腦和手機(jī)列赎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镐确,“玉大人包吝,你說我怎么就攤上這事饼煞。” “怎么了诗越?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵砖瞧,是天一觀的道長。 經(jīng)常有香客問我嚷狞,道長块促,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任床未,我火速辦了婚禮竭翠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薇搁。我一直安慰自己斋扰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布啃洋。 她就那樣靜靜地躺著褥实,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裂允。 梳的紋絲不亂的頭發(fā)上损离,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音绝编,去河邊找鬼僻澎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛十饥,可吹牛的內(nèi)容都是我干的窟勃。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼逗堵,長吁一口氣:“原來是場噩夢啊……” “哼秉氧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜒秤,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤汁咏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后作媚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攘滩,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年纸泡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了漂问。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蚤假,靈堂內(nèi)的尸體忽然破棺而出栏饮,到底是詐尸還是另有隱情,我是刑警寧澤磷仰,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布抡爹,位于F島的核電站,受9級(jí)特大地震影響芒划,放射性物質(zhì)發(fā)生泄漏冬竟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一民逼、第九天 我趴在偏房一處隱蔽的房頂上張望泵殴。 院中可真熱鬧,春花似錦拼苍、人聲如沸笑诅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吆你。三九已至,卻和暖如春俊犯,著一層夾襖步出監(jiān)牢的瞬間妇多,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來泰國打工燕侠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留者祖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓绢彤,卻偏偏與公主長得像七问,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茫舶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容