MultiDex介绍与使用

MultiDex

Class文件与Dex文件

Dex(Dalvik-executable) class文件处理后的产物,专门为安卓上的虚拟机设计的一种压缩格式
in JAVA: *.java *.kt => *.class => JVM
in Android: *.java *.kt => *.class =>(去冗余) *.dex => Dalvik VM or ART VM

使用MultiDex的原由

当 Android 应用程序包含太多的方法数时,会出现 "方法数超过 65536" 的编译错误。这是由于 Android 操作系统对单个 Dex 文件(Dalvik Executable)的方法数有限制所致。为了解决这个问题,Android 提供了 Multidex 支持。

如何使用

  • Android 5.0及更高版本
//in Build.gradle
android {
	defaultConfig {
		...
		minSdkVersion 21// Android 5.0
		multiDexEnabled true// 启用MultiDex,Android 5.0及更高版本默认启用,实际无需配置
	}
}
  • Android 5.0之前版本
//in Build.gradle
android {
	defaultConfig {
		...
		minSdkVersion 14// Android 4.0
		multiDexEnabled true// 启用MultiDex
	}
}
dependencies {
	def multidex_version = "2.0.1"
	implementation "androidx.multidex:multidex:$multidex_version"
}

如果没有自定义Application

<!-- in AndroidManifest.xml -->
<application
	android:name="androidx.multidex.MultiDexApplication" >
	...
</application>

如果自定义了Application

// in your custom Application
public class MyApplication extends MultiDexApplication { ... }

如果您替换 Application 类,但无法更改基类,可以这么做以开启MultiDex

// in your custom Application
public class MyApplication extends SomeOtherApplication {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}
posted @ 2023-10-10 10:30  指切  阅读(595)  评论(0编辑  收藏  举报