概述
Android 应用 (APK) 文件包含 Dalvik Executable (DEX) 文件形式的可执行字节码文件,其中包含用来运行您的应用的已编译代码。Dalvik Executable 规范将可在单个 DEX 文件内可引用的方法总数限制在 65,536,其中包括 Android 框架方法、库方法以及您自己代码中的方法。在计算机科学领域内,术语千(简称 K)表示 1024(或 2^10)。由于 65,536 等于 64 X 1024,因此这一限制也称为“64K 引用限制”。
解决方案:
-
若应用的 minSdkVersion 设置为 21 及一下,则必须按如下方式使用 Dalvik 可执行文件分包支持库:
- gradle配置
android { defaultConfig { ... multiDexEnabled true //开启分包 } ... dependencies { implementation 'com.android.support:multidex:1.0.3' //添加分包支持库 } }
- Application 配置
如果您没有替换 Application 类,请编辑清单文件,按如下方式设置 <application> 标记中的 android:name:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application android:name="android.support.multidex.MultiDexApplication" > ... </application> </manifest>
如果已替换了Application 类,请按如下方式对其进行更改以扩展MultiDexApplication(如果可能):
public class MyApplication extends MultiDexApplication { ... }
但无法更改基本类,则可以替换 attachBaseContext() 方法并调用 MultiDex.install(this) 来启用 Dalvik 可执行文件分包:
public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(context); Multidex.install(this); } }
-
若应用的minSdkVersion 设置为 21 或更高值,则只需如下配置:
android { defaultConfig { ... multiDexEnabled true //开启分包 } }
参考网址:https://developer.android.google.cn/studio/build/multidex
网友评论