Android 5.0以下,使用android studio 出現錯誤com.android.build.api.transform.TransformException:

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文件用於執行. 通熟的講,就是分包。

參考:http://www.jianshu.com/p/8b4f711da0bb

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章