最近将Android Studio升级到3.0了,随之Gradle版本也一起升级到4.1版本,但是在运行的时候出现了一下的错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dyso.****, PID: 6387
java.lang.NoClassDefFoundError: com.squareup.leakcanary.AndroidRefWatcherBuilder
at com.squareup.leakcanary.LeakCanary.refWatcher(LeakCanary.java:47)
at com.squareup.leakcanary.LeakCanary.install(LeakCanary.java:40)
at com.dyso.****.MyApplication.onCreate(MyApplication.java:44)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)
at dalvik.system.NativeStart.main(Native Method)
于是屏蔽这个LeakCanary的引用,但是依然错误依然会在QbSdk内出现。那应该不是包的问题了,于是就在新建一个工程,把这些包添加进来逐个试验,最后发现是 multiDexEnabled true 这个防止dex突破65535的设置造成的。
defaultConfig {
applicationId "com.cheng.testgradle"
minSdkVersion 17
targetSdkVersion 26
versionCode 1
versionName "1.0"
multiDexEnabled true
}
解决方法
1.导入 compile ‘com.android.support:multidex:1.0.2’
dependencies {
compile 'com.android.support:multidex:1.0.2'
}
2.在Application类添加以下代码
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this); //为了防止dex突破65535的限制
}
}
再次运行 完美解决