1、Multidex的产生
在android5.0之前,每一个android应用中只会含有一个dex文件,但是因为Android系统本身的BUG,使得这个dex的方法数量被限制在65535之内,这就是著名的"64K(641024)"*事件。为了解决这个问题,Google官方推出了这个类似于补丁一样的support-library。关于这个库的详细使用,可以参考官方文档,当然使用起来也会有些坑的,美团填坑记或者这位老兄。使用这个库后,我们的APP不再只会仅有一个dex文件,可能会产生多个dex文件,这样就避免了64K问题。
2、使用方式
用Gradle配置使用Multidex
Android 的 Gradle插件在 Android Build Tool 21.1开始就支持使用multidex了。
设置你的应用程序开发项目中使用multidex配置,要求你做出一些修改您的应用程序开发项目。
- 修改Gradle的配置,支持multidex
- 修改你的manifest。让其支持multidexapplication类
- 修改Gradle的build如下:
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
对于Multidex的使用,大致有以下几种方式
直接继承MultiDexApplication
public class MyApplication extends MultiDexApplication{
// ...........
}
直接调用MultiDex.install(Context);
public class MyApplication extends Application{
public void onCreate(){
MultiDex.install(this);
}
}
这两种使用方式,其实本质是一样的,都是通过MultiDex.install(this)来完成dex的加载,看看MultiDexApplication的实现:
public class MultiDexApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
3、错误
- 一、错误类型是: Could not resolve com.android.support:multidex:1.0.2 时,解决方法如下
buildscript {
repositories {
jcenter()
mavenLocal()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
}
allprojects {
repositories {
jcenter()
google()
}
}
网友评论