本文轉(zhuǎn)載至http://quanke.name/2016/07/19/%E5%AE%8C%E7%BE%8E%E8%A7%A3%E5%86%B3-java-lang-NoClassDefFoundError-R-R-%E5%B7%A8%E5%9D%91/?
完美解決 java.lang.NoClassDefFoundError R R 巨坑
發(fā)表于2016-07-19|分類于android開發(fā)|
歡迎關(guān)注http://quanke.name/
轉(zhuǎn)載請注明出處,謝謝
此坑有點大梭域,害我同事弄了一周沒有搞定
開始的時候是報另外一個錯誤博烂,也是NoClassDefFoundError異常,但這個是因為包沖突的問題,刪除掉一些包就好了。但是這個問題沒有這么簡單贵少。
首先描述一下我們的場景吧:
我們做了一個優(yōu)談TOPAPP组砚,主要的邏輯代碼是在一個單獨的android studio module實現(xiàn)的,這個主要是為了可以導(dǎo)入到公司其他APP里面利职,就是把優(yōu)談TOP當(dāng)成sdk趣效,嵌入到公司其他APP里,我們使用優(yōu)談TOP單獨運行的時候沒有一點問題猪贪,導(dǎo)入到另外要一個APP的時候跷敬,問題就出現(xiàn)了。
百度热押,Google搜了以大堆資料西傀,都沒有解決斤寇,最后在stackoverflow找到了一種方案。還真可以
stackoverflow連接http://stackoverflow.com/questions/32110859/fatal-exception-java-lang-noclassdeffounderror-android-support-v7-appcompat-r
看了這個才知道池凄,這是Dex超出方法數(shù)的限制問題抡驼,Dex達(dá)到極限時,會創(chuàng)建多個Dex文件肿仑,android Lollipop 沒有處理致盟,需要在應(yīng)用中處理 。
第一步:
在build.gradle中增加(非rootbuild.gradle)
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
defaultConfig {
multiDexEnabled true
}
第二步:
在AndroidManifest.xml增加
...
android:name="android.support.multidex.MultiDexApplication">
...
如果需要自己實現(xiàn)Application,需要重寫attachBaseContext方法
import android.support.multidex.MultiDexApplication;
import android.support.multidex.MultiDex;
public class MyApplication extends MultiDexApplication {
// ......
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
或者
import android.support.multidex.MultiDex;
public class MyApplication extends Application {
// ......
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
參考:https://developer.android.com/tools/building/multidex.html#mdex-gradle
這里記錄一下沒有解決我的問題的方案尤慰,也許你有用:
http://stackoverflow.com/questions/9870995/android-java-lang-noclassdeffounderror