• Android 出现java.lang.NoClassDefFoundError错误


    项目中用到了Retrofit在android4.4以下版本发生的问题

    因为项目的build.gradle文件沿用于一个项目的,在defaultConfig z中已经声明了 multiDexEnabled true ,当方法数超过65535时便会自动打出两个Dex包命名为classes.dex classes2.dex ,一些方法被打入了第二个dex包,即classes2.dex中,导致了5.0以下机型无法运行应用报错。

    解决方法:

    (1)在app的 build.gradle 中的dependencies 中添加

           compile 'com.Android.support:multidex:1.0.1'

          dependencies {
                 compile fileTree(include: ['*.jar'], dir: 'libs')
                 compile 'com.android.support:multidex:1.0.1'
           }
    (2)在app的 build.gradle 中的 defaultConfig 中添加
               multiDexEnabled true
             defaultConfig {
          ...
          multiDexEnabled true
             }
    (3)在 AndroidManifest.xml 中的  application 标签中添加 :

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package=".test">
         <application
            ...
             android:name="android.support.multidex.MultiDexApplication">
            ...
        </application>
    </manifest>
    提示:如果你的应用重写了Application,则你需要继承MultiDexApplication而不再是Application啦
    如果你的工程中已经含有Application类,那么让它继承android.support.multidex.MultiDexApplication类,如果你的Application已经继承了其他类并且不想做改动,那么还有另外一种使用方式,覆写attachBaseContext()方法:

    /**
     * 分割 Dex 支持
    * @param base
    */
    @Override
    protected void attachBaseContext(Context base) {
             super.attachBaseContext(base);
              MultiDex.install(this);
    }

  • 相关阅读:
    statement 对象执行sql语句
    复习 利用表单传递参数
    多个jsp页面共享Java bean
    Rquest对象代码练习
    Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
    oracle基本建表语句
    Oracle存储过程创建及调用
    Oracle存储过程(增、删、改)写法、oracle执行存储过程
    ExecuteNonQuery()的用法
    WinForm里面连接Oracle数据库
  • 原文地址:https://www.cnblogs.com/Claire6649/p/7723351.html
Copyright © 2020-2023  润新知