Android 5.0以下,使用android studio 出現錯誤com.android.build.api.transform.TransformException:
使用as去跑5.0以下的手機,居然跑出了錯誤com.android.build.api.transform.TransformException: …….class com.android.dx.command.Main with arguments {–dex –num-thre}……..jar,……jar
在build.gradle添加
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
defaultConfig {
multiDexEnabled true
}
控制最大的內存。。
之後app能跑起來,但是,閃退。。。
錯誤:android Error:java.lang.OutOfMemoryError: GC overhead limit exceeded
java.lang.NoClassDefFoundError:
基本看出內存溢出閃退。
解決方案
dependencies {
// 添加依賴
compile 'com.android.support:multidex:1.0.0'
}
使用自定義的Application繼承MultiDexApplication這個類,或者重寫Application的方法attachBaseContext(),並調用MultiDex.install();
原因是: 這個錯誤是Android應用的方法總數限製造成的。Android平臺的Java虛擬機Dalvik在執行DEX格式的Java應用程序時,使用原生類型short來索引DEX文件中的方法。這意味着單個DEX文件可被引用的方法總數被限制爲65536。通常APK包含一個classes.dex文件,因此Android應用的方法總數不能超過這個數量,這包括Android框架、類庫和你自己開發的代碼。而Android 5.0和更高版本使用名爲ART的運行時,它原生支持從APK文件加載多個DEX文件。在應用安裝時,它會執行預編譯,掃描classes(..N).dex文件然後將其編譯成單個.oat文件用於執行. 通熟的講,就是分包。