美文网首页
64K 引用限制

64K 引用限制

作者: 3Q竹林 | 来源:发表于2018-05-29 14:44 被阅读20次
    概述

           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 类,请编辑清单文件,按如下方式设置 <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

    相关文章

      网友评论

          本文标题:64K 引用限制

          本文链接:https://www.haomeiwen.com/subject/xbsojftx.html