低版本手机遇到问题
感谢 江子涛Tesla
原文地址 :https://blog.csdn.net/u010312949/article/details/72884790
一件thing
holl,hello, helo,咳咳。是的大家又见到了我,没错。最近我特么真的高产似母猪,没办法项目问题真的多。项目是一个关于融合跑腿,滴滴打车类似功能的APP。所以引入的第三方包很多。
一个Bug
此时就出现了一个巨大的Bug:
java.lang.NoClassDefFoundError: rx.subscriptions.CompositeSubscription
at rx.internal.schedulers.CachedThreadScheduler$CachedWorkerPool.<init>(CachedThreadScheduler.java:60)
at rx.internal.schedulers.CachedThreadScheduler.<clinit>(CachedThreadScheduler.java:42)
at rx.plugins.RxJavaSchedulersHook.createIoScheduler(RxJavaSchedulersHook.java:90)
at rx.plugins.RxJavaSchedulersHook.createIoScheduler(RxJavaSchedulersHook.java:76)
at rx.schedulers.Schedulers.<init>(Schedulers.java:90)
at rx.schedulers.Schedulers.getInstance(Schedulers.java:66)
at rx.schedulers.Schedulers.io(Schedulers.java:160)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
一种cause
由Android Studio的错误提醒:java.lang.NoClassDefFoundError , 可以得知是由于分包出现的错误,dex/field/class这三个文件的个数在android里面都是有限制的,为65535个。而现在由于我在开始的时候就如下面所示进行了设置,于是便没有65535出现,只有上面所示的错误了。
defaultConfig {
applicationId "cn.jiayou.dsf.delivery"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled = true //表示可以进行分包, 用于启用MultiDex
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
一个method
那么找到原因就可以开干了!StackOverflow最高票的解决方法! ,参考这篇文章,就可以了。
在defaultConfig中添加multiDexEnabled = true
导入分包support库compile ‘com.android.support:multidex:1.0.1’
用MultiDexApplication替代Application,或者在你application的attachBaseContext()方法中调用MultiDex.install()。
OVER,这样子就解决了!
代码_1:
multiDexEnabled = true //表示可以进行分包, 用于启用MultiDex
- 1
代码_2:
compile 'com.android.support:multidex:1.0.1' //支持包用于5.0以下系统
- 1
代码_3:
public class MyApp extends Application{
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
@Override
public void onCreate() {
super.onCreate();
mContext = this;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11