有时候发现当程序运行在4.4.4时候 就会闪退。同时有的时候会报 java.lang.NoClassDefFoundError

那么为什么会出现这样的问题,其实你在程序报错这个错误的时候仔细分析,你就会发现一般在你继承一些比较庞大的第三方的时候就会出现这个问题。

出现这种原因是因为Android规定方法的数量不能超过 65,536,它代表的是单个 Dalvik 字节码文件内的代码可调用的引用总数。

Android 5.0 之前版本的 Dalvik 可执行文件不支持分包

Android 5.0之前的版本使用 Dalvik 来执行应用代码。默认情况下,Dalvik 限制应用的每个 APK 只能使用单个 classes.dex 字节码文件

而Android 5.0 及更高版本的 Dalvik 可执行文件支持分包

Android 5.0及更高版本使用名为 ART 的运行时,后者原生支持从 APK 文件加载多个 DEX 文件。ART 在应用安装时执行预编译,扫描 classesN.dex 文件,并将它们编译成单个 .oat 文件,供 Android 设备执行,(从网上copy过来的)

这里有两种解决方式

1.就是你将minSdkVersion 设置为 21 或更高值

2.(1)首先在build.gradle文件中,将 multiDexEnabled 设置为 true

android {    defaultConfig {        ...        minSdkVersion 15         targetSdkVersion 23        multiDexEnabled true    }    ...}

(2)在你重写Application中 重写attachBaseContext方法

public class MyApplication2 extends Application {    @Override    protected void attachBaseContext(Context base) {        super.attachBaseContext(base);        MultiDex.install(this);    }}

大功告成。。

更多相关文章

  1. Android不同版本获取当前wifi信息方法
  2. android该系统的应用API选择演示版本
  3. Windows下的Android SDK下载,2.2之前各个版本及Google API,文档说
  4. Android 实现文件上传功能(upload)
  5. Android历次主要版本更新说明书
  6. Android清单文件详解(六) ---- 节点的属性
  7. Android Studio 2.2 发布,速度、智能和 Android 平台支持三个方面
  8. android Kotlin 继承、派生、接口、构造方式,方法、属性重写
  9. android user版本进行编译出现proguard错误混淆

随机推荐

  1. Android(安卓)JNI 详解
  2. Android(安卓)3D系列之基本概念篇
  3. 分享几点Android(安卓)开发中的小技巧
  4. Android动态权限
  5. Android中读写文件
  6. Android的jCenter与Maven Central仓库
  7. android 根据屏幕大小自行选择图片
  8. Android(安卓)init进程启动
  9. Android(安卓)应用性能评估
  10. android基础的回顾(一)开发工具的转变---an