之前用環(huán)信寫(xiě)過(guò)包含即時(shí)通訊功能的APP,可是沒(méi)有出現(xiàn)過(guò)在Android 5.0以下初始化失敗的情況,而且使用的都是環(huán)信3.X的SDK。
先來(lái)看一下我遇到的錯(cuò)誤
java.lang.NoClassDefFoundError: com/superrtc/call/AudioTrack
java.lang.ClassNotFoundException: Didn't find class "com.superrtc.call.AudioTrack" on path: /data/app/com.XXX.XXX.apk

異常圖01

異常圖02

異常圖03
下面分享一下我解決問(wèn)題的心路歷程,想看解決方法的直接跳到文章結(jié)尾就好了。
問(wèn)題大概都是提示ClassNotFound之類(lèi)的問(wèn)題,最開(kāi)始我以為是.so文件與極光的SDK發(fā)生了沖突,于是我copy了一份代碼出來(lái),移除了極光之后還會(huì)出現(xiàn)這種問(wèn)題。
隨后有重新配置了以下混淆的proguard配置文件,問(wèn)題依舊。
后來(lái)我查看了一下提示出來(lái)的類(lèi),上面都有注釋@TargetApi(21),于是我百度了一下環(huán)信5.0以下初始化失敗,有幾位博主給出了同樣的結(jié)局方案就是在Application的onCreate方法中super.OnCreate();方法前加一句話(huà)MultiDex.install(this);就可以了,但是都沒(méi)有給出具體的原因。確實(shí)在Android 5.0以下的環(huán)境可以啟動(dòng)App了,但是問(wèn)題又出現(xiàn)了,在Android 5.0以上的手機(jī)中出現(xiàn)了下面的問(wèn)題
Error:(10, 32) 錯(cuò)誤: 程序包android.support.multidex不存在
重點(diǎn),下面才是完整的解決方法?。?!
實(shí)際上這個(gè)問(wèn)題是因?yàn)锳ndroid工程方法數(shù)量超過(guò)了65536的限制
下面給出解決方法:
Step1:
在gradle的配置文件中添加依賴(lài) compile 'com.android.support:multidex:1.0.1'
Step2:
添加 multiDexEnabled true
android {
...
defaultConfig {
...
multiDexEnabled true
...
}
}
Step3:
在工程的MainApplication中重寫(xiě) attachBaseContext() 方法
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}