首先說(shuō)下安卓項(xiàng)目的方法數(shù)是不能超過(guò)65k限制的番川,不然編譯的時(shí)候就會(huì)有報(bào)錯(cuò)提示邑狸,這也是很大一部分使用Eclipse轉(zhuǎn)向Android Studio 的原因之一懈糯,很不幸的我也中獎(jiǎng)了,因?yàn)榕f項(xiàng)目的各種開(kāi)源各種lib单雾,導(dǎo)致方法數(shù)爆炸了只能轉(zhuǎn)向AS赚哗。
下面僅僅記錄下使用AS編譯器Gradle進(jìn)行Multidex分包的過(guò)程,看到的可以少走彎路硅堆;
1.gradle 里面加上如下腳本屿储,會(huì)自動(dòng)在External Libraries 下加上multidex的lib
defaultConfig {
multiDexEnabledtrue
}
2.繼承MultiDexApplication或者繼承Application并且重寫(xiě)attachBaseContext() 加上MultiDex.install(this),或者xml修改application:
android:name="android.support.multidex.MultiDexApplication">
@Override
protected voidattachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
到這邊其實(shí)就可以了渐逃,但是最近發(fā)現(xiàn)不同gradle版本差分dex的方式并不一樣
com.android.tools.build:gradle:1.3.0 拆分是自動(dòng)達(dá)到首個(gè)class.dex 方法數(shù)滿65k后才去拆分第二個(gè)class1.dex
com.android.tools.build:gradle:1.5.0及以上版本差分的方式都是任意够掠,因?yàn)榻鈮撼鰜?lái)有十幾個(gè)class.dex文件,所以
1.3.0以上的gradle版本最好再加上控制腳本茄菊,以下疯潭;
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if(dx.additionalParameters==null) {
dx.additionalParameters= ['--multi-dex']
}else{
dx.additionalParameters+='--multi-dex'
}
// optional
//dx.additionalParameters += ‘–main-dex-list=main-dex-list.txt’.toString()用于指定第一個(gè)包中必需包含的類(lèi)赊堪,存放在 main-dex-list.txt中文件名可自行修改
//dx.additionalParameters += ‘–minimal-main-dex’最小化主包,與–main-dex-list配合使用竖哩,則主包中只含有文件中指定的類(lèi)
dx.additionalParameters= ['--set-max-idx-number=65000']//用于指定每個(gè)dex包中最多的函數(shù)數(shù)量雹食,多余此數(shù)量則自動(dòng)進(jìn)行分包
}
}
最近切換到AS2.0進(jìn)行開(kāi)發(fā),增加的及時(shí)運(yùn)行功能也就是快速構(gòu)建容易出問(wèn)題期丰,記錄下
Note:When using Instant Run with a project configured forLegacy Multidex,i.e.build.gradleis configured withminSdkVersion 20(or lower) andmultiDexEnabled true, build performance may decrease when deploying a clean build to target devices running Android 5.0 (API level 21) or higher. After the initial clean build, incremental builds will be significantly faster, and Instant Run will deploy code and resource changes as normal. To improve clean build performance during development, considercreating a product flavorwithminSdkVersion 21.
快速構(gòu)建只能在5.0或以上的真機(jī)設(shè)備或者自帶模擬器才可以,真是苦了Genymotion一直報(bào)奇怪的錯(cuò)誤
以上僅僅是自己的記錄吃挑,有錯(cuò)誤的可以幫我改正钝荡,謝謝,另外網(wǎng)上說(shuō)的其他幾種會(huì)出現(xiàn)的比如ANR異常并未出現(xiàn)就不做詳細(xì)記錄舶衬。