配置方法數(shù)超過(guò) 64K 的應(yīng)用

關(guān)于 64K 引用限制

是指單個(gè)DEX文件內(nèi)可引用的方法總數(shù)不超過(guò)65,536,即64 X 1024豹绪,所以稱為64K引用限制逻翁。

可執(zhí)行文件分包支持

Android5.0(21)后的ART原生支持從 APK 文件加載多個(gè) DEX 文件玫膀,所以只要minSdkVersion為21或更高浊吏,就不需要 Dalvik 可執(zhí)行文件分包支持庫(kù)。5.0之前的系統(tǒng)是需要Dalvik 可執(zhí)行文件分包支持庫(kù)的帆焕。

規(guī)避 64K 限制的方法

  1. 檢查您的應(yīng)用的直接和傳遞依賴項(xiàng)
    不要僅僅為了使用依賴庫(kù)的幾個(gè)方法惭婿,就引入依賴庫(kù)。
  2. 通過(guò) ProGuard 移除未使用的代碼
    使用混淆的壓縮功能,移除未使用到的代碼财饥。

配置Dalvik 可執(zhí)行文件分包

  1. multiDexEnabled true
  2. compile 'com.android.support:multidex:1.0.1'
  3. Multidex.install(this);

聲明主 DEX 文件中需要的類

如果出現(xiàn) java.lang.NoClassDefFoundError换吧,使用multiDexKeepFilemultiDexKeepProguard把該類添加到主DEX文件。

優(yōu)化開(kāi)發(fā)構(gòu)建中的 Dalvik 可執(zhí)行文件分包

Dalvik 可執(zhí)行文件分包配置會(huì)大幅增加構(gòu)建處理時(shí)間钥星,因?yàn)橐獩Q定哪些類放在主DEX式散,哪些類放在鋪DEX是非常復(fù)雜的,所以非常耗時(shí)打颤。
可以利用productFlavors來(lái)搞一個(gè)開(kāi)發(fā)定制和發(fā)布定制,對(duì)于開(kāi)發(fā)定制漓滔,將minSdkVersion設(shè)置為 21编饺,這樣開(kāi)發(fā)的時(shí)候構(gòu)造將更快。
以下是配置示例:

android {
    defaultConfig {
        ...
        multiDexEnabled true
    }
    productFlavors {
        dev {
            // Enable pre-dexing to produce an APK that can be tested on
            // Android 5.0+ without the time-consuming DEX build processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the production version.
            minSdkVersion 14
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                                                 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile 'com.android.support:multidex:1.0.1'
}

您完成此配置變更后响驴,可以為增量式構(gòu)建使用應(yīng)用的 devDebug 變體透且,后者集 dev 產(chǎn)品定制與 debug 構(gòu)建類型的屬性于一身。這將創(chuàng)建已啟用 Dalvik 可執(zhí)行文件分包且禁用 proguard 的可調(diào)試應(yīng)用(因?yàn)?minifyEnabled 默認(rèn)為 false)豁鲤。這些設(shè)置會(huì)使適用于 Gradle 的 Android 插件執(zhí)行以下操作:

  1. 執(zhí)行 pre-dexing:將每個(gè)應(yīng)用模塊和每個(gè)依賴項(xiàng)構(gòu)建為單獨(dú)的 DEX 文件秽誊。
  2. 將每個(gè) DEX 文件加入 APK,并且不做任何修改(不執(zhí)行代碼壓縮)琳骡。
  3. 最重要的是锅论,模塊 DEX 文件不執(zhí)行合并操作,因此可以避免為確定主 DEX 文件的內(nèi)容而進(jìn)行長(zhǎng)時(shí)間的計(jì)算楣号。

這些設(shè)置的好處是最易,可以進(jìn)行快速的增量式構(gòu)建,因?yàn)橹挥行薷倪^(guò)的模塊的 DEX 文件才會(huì)在后續(xù)構(gòu)建期間重新計(jì)算并重新打包炫狱。但是藻懒,這些構(gòu)建的 APK 只能用于在 Android 5.0 設(shè)備上進(jìn)行測(cè)試。不過(guò)视译,由于是以定制形式實(shí)現(xiàn)配置嬉荆,您保留了使用與發(fā)布相適的最低 API 級(jí)別和 ProGuard 代碼壓縮執(zhí)行正常構(gòu)建的能力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酷含,一起剝皮案震驚了整個(gè)濱河市鄙早,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌第美,老刑警劉巖蝶锋,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異什往,居然都是意外死亡扳缕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)躯舔,“玉大人驴剔,你說(shuō)我怎么就攤上這事≈嘧” “怎么了丧失?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)惜互。 經(jīng)常有香客問(wèn)我布讹,道長(zhǎng),這世上最難降的妖魔是什么训堆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任描验,我火速辦了婚禮,結(jié)果婚禮上坑鱼,老公的妹妹穿的比我還像新娘膘流。我一直安慰自己,他們只是感情好鲁沥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布呼股。 她就那樣靜靜地躺著,像睡著了一般画恰。 火紅的嫁衣襯著肌膚如雪彭谁。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天允扇,我揣著相機(jī)與錄音马靠,去河邊找鬼。 笑死蔼两,一個(gè)胖子當(dāng)著我的面吹牛甩鳄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播额划,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼妙啃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了俊戳?” 一聲冷哼從身側(cè)響起揖赴,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抑胎,沒(méi)想到半個(gè)月后燥滑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阿逃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年铭拧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赃蛛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搀菩,死狀恐怖呕臂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肪跋,我是刑警寧澤歧蒋,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站州既,受9級(jí)特大地震影響谜洽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吴叶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一褥琐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晤郑,春花似錦、人聲如沸贸宏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吭练。三九已至诫龙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲫咽,已是汗流浹背签赃。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留分尸,地道東北人锦聊。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像箩绍,于是被迫代替她去往敵國(guó)和親孔庭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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