有时候发现当程序运行在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(安卓)Studio初学习体会
  2. Android(安卓)关机流程分析-----(2)JNI和kernel层
  3. Android的程序解码与XML文件解码
  4. 在Android中使用Handler和Thread线程执行后台操作
  5. 将写好的软件安装到Android手机
  6. Android(安卓)Google Map(create md5, create google map key)
  7. Android(安卓)Studio 使用AIDL
  8. Android不同版本获取当前wifi信息方法
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android ContentProvider 使用
  2. Android开发之实现锁屏功能
  3. Android本地代码直接访问远程数据库(Rxja
  4. Ormlite入门
  5. Shape的相关属性详解
  6. Android设置布局背景为白色的三种方法
  7. Ubuntu 14.04 Android 使用Maven二 创建
  8. Android 的用户层 uevent处理机制
  9. Ubuntu14.04 ERROR WHILE LOADING SHARED
  10. (一百九十)Android Jetpack 学习(四)—— 偏