multidex 在api 19 遇到的问题,启动闪退,不报错

2018-02-17 18:20:27

今天用华为4.4系统的api19 ,用android Studio 直接运行app,结果闪退,没有一个错误信息,这就操蛋了,懵逼了。


但是我混淆打包以后的不会出现问题。

只有下面这个报错信息。

threadid=1: thread exiting with uncaught exception (group=0x40...)

百度搜错,说通过UncaughtExceptionHandler  这个接口可以获得报错信息。


结果依然没有出现报错信息。

最后也巧,手边还有一个破旧的小米4.4系统的,运行也是闪退,不过幸运的是这个出现了报错信息。


 java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.zyjr.emergencylending-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.zyjr.emergencylending-1, /vendor/lib, /system/lib]]
                                                     at android.app.ActivityThread.installProvider(ActivityThread.java:4892)
                                                     at android.app.ActivityThread.installContentProviders(ActivityThread.java:4484)
                                                     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4424)
                                                     at android.app.ActivityThread.access$1500(ActivityThread.java:143)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:136)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5120)
                                                     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:818)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
                                                     at dalvik.system.NativeStart.main(Native Method)
                                                  Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.zyjr.emergencylending-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.zyjr.emergencylending-1, /vendor/lib, /system/lib]]
                                                     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
                                                     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
                                                     at android.app.ActivityThread.installProvider(ActivityThread.java:4877)
                                                     at android.app.ActivityThread.installContentProviders(ActivityThread.java:4484) 
                                                     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4424) 
                                                     at android.app.ActivityThread.access$1500(ActivityThread.java:143) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                     at android.os.Looper.loop(Looper.java:136) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5120) 
                                                     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:818) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) 
                                                     at dalvik.system.NativeStart.main(Native Method) 


在网上找了好多资料,找了好久,终于解决了,希望能帮到需要的人,也帮自己记录一下!

解决方法:
可能是添加MultiDex分包,但未初始化的原因,在Application中重写attachBaseContext函数,对MultiDex初始化即可。
1)首先修改Gradle配置文件,启用MultiDex并包含MultiDex支持:

	defaultConfig {       		 multiDexEnabled true 		}

2)修改BaseApplication,重写attachBaseContext方法


 @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(base);
    }


根据这个解决了问题。

  • 2017-05-25 23:18:23

    webpack图片的路径与打包

    刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不能打包进我们的目标文件夹里(bundle)。下面我们就来分析下在webpack项目中图片的应用场景。

  • 2017-06-17 18:33:17

    NodeJs使用asyncAwait两法

    async/await使用同步的方式来书写异步代码,将异步调用的难度降低到接近于0,未来必将大放异彩。然而在当下,由于标准化的缓存步伐,async/await尚在ES7的草案中。为了尝先,特试用了下面两种方式:

  • 2017-06-18 02:26:17

    Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F

    我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范)。正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智能手机输入法中的表情。那为什么会报错呢?

  • 2017-06-18 02:34:22

    谈mysql中utf8和utf8mb4区别

    MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

  • 2017-07-05 09:48:51

    CSS 元素垂直居中的 6种方法

    利用CSS进行元素的水平居中,比较简单,行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可。本文收集了六种利用css进行元素的垂直居中的方法,每一种适用于不同的情况,在实际的使用过程中选择某一种方法即可。

  • 2017-07-06 10:02:18

    大白话讲解Promise(一)

    去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之一,我们有必要掌握并理解透彻。本文将由浅到深,讲解Promise的基本概念与使用方法。