64K 引用限制

概述

       Android 应用 (APK) 文件包含 Dalvik Executable (DEX) 文件形式的可执行字节码文件,其中包含用来运行您的应用的已编译代码。Dalvik Executable 规范将可在单个 DEX 文件内可引用的方法总数限制在 65,536,其中包括 Android 框架方法、库方法以及您自己代码中的方法。在计算机科学领域内,术语千(简称 K)表示 1024(或 2^10)。由于 65,536 等于 64 X 1024,因此这一限制也称为“64K 引用限制”。

解决方案:
  • 若应用的 minSdkVersion 设置为 21 及一下,则必须按如下方式使用 Dalvik 可执行文件分包支持库:

    1. gradle配置
    android {
          defaultConfig {
              ...
              multiDexEnabled true //开启分包
          }
      ...
    
      dependencies {
          implementation 'com.android.support:multidex:1.0.3' //添加分包支持库
      }
    }
    
    1. Application 配置
      如果您没有替换 Application 类,请编辑清单文件,按如下方式设置 标记中的 android:name:
    
    
      
          ...
      
    
    

    如果已替换了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

你可能感兴趣的:(64K 引用限制)