使用 MultiDex 解决 64K 限制
发布日期:2021-05-10 14:01:38 浏览次数:12 分类:精选文章

本文共 5195 字,大约阅读时间需要 17 分钟。

Android ������������ dex ���������������������

Android ���������������APK������������ Dalvik ������������������������������������������������������������������������������DEX������������������������������������������������������������������������Dalvik ������������������������ dex ��������������������������������������������� 65536���64��1024��������������������������� ���64k ������������������������������������������������������������������������������������������������������������������


������������

��������������������������������������������������������������������������� dex ��������� 64k ������������������������������������������������������

  • ������������������-build���������������������������������������������������������������������������OOM������
  • ������������������������������������������������������������������������ClassNotFound������������

���������������������������approach������������������������������������������������


Google ���������������������Multidex

Google ��������� Multidex ��������������������������������������� dex ������������������ 64k ���������������������������������������

������������������

  • Android SDK Build Tools ��� 21.1
  • ������ Android Support Repository ���������������

������������

��������������������������������������� dex ���������������������������������������������Google ������������������������������������������


��������������������� building.gradle

��������������������� app module ��� build.gradle ��������������� multidex ���������

android {    compileSdkVersion 21    buildToolsVersion "21.1.0"    defaultConfig {        minSdkVersion 14        targetSdkVersion 21        // ��������� dex ������        multiDexEnabled true    }    dexOptions {        javaMaxHeapSize "4g" // ��������������� OOM    }}dependencies {    compile 'com.android.support:multidex:1.0.1'}

������������

Multidex ������������������������������������������������������������������������������������������������ dex ������������������������������������������������������������������������

  • ��������� dex ������������

    • ������ multiDexKeep.pro ��������������� ProGuard ������������������
      -keepclassmembers class fqcn.of.javascript.interface.for.webview {    public *;}
    • ������ multiDexKeep.txt ��������������������������������������� dex ���������������������
      com.example.MyClasscom.example.MyOtherClass
  • ��� dex ���������������

    • �������������Multidex ��������������������������� dex ��������������������������� dex ���������������������������������������������������
  • ���������������

    • ��������������������������������������������� dex ������������������������������������������������

  • Gradle������������

    ��� dex ������������

    ��� build.gradle ��������� multidex������ ������������ ������ dexOptions������������ Java MAX_HEAP ���������������������������������������������

    android {    compileSdkVersion 21 // ��������������������������������������������� 21.1    buildToolsVersion "21.1.0"    defaultConfig {        minSdkVersion 14        targetSdkVersion 21        multiDexEnabled true // ������ multi dex ������    }    dexOptions {        javaMaxHeapSize "4g" // ���������������������������������������    }}
    • Compile Completion Time������������������������������������������������������������������cef compatible ���������������������������������

    ��������� Application ���

    ���������������������������������������

    ������������������ MultiDexApplication

    ������������������������������������ Application ��������������������� attachBaseContext ��������������� mult dex ���������

    public class MyApplication extends Application {    @Override    protected void attachBaseContext(Context base) {        super.attachBaseContext(base);        MultiDex.install(this);    }}

    ������������������������������ Application ���

    ������������������������������������������ Application ��������������������������� MultiDex.install() ��������� attachBaseContext ������������������

    ��������������������������� Application

    ������������������������ Application ������������������������ MultiDexApplication������������������������


    ������������������

    1. ��������� dex ������������������������������

    Dalvik ������������������������������ dex ��������������������������������������� 65536 ���������������������������������������������������

    2. ��������������������������������������� multi dex?

    ��������������� multi dex������������ dex ���������������������������������������������������������������������������������������������������

    3. ������������ multi dex���

    ������ multi dex ������������������������������ Dalvik dex ������������������������������������������������������ dex ���������������������������������


    ������������

    • Dalvik���Android ������ Dalvik ������������������������������������ dex ���������
    • ProGuard���������������������������������������������������������������������������������������������������������
    • Multidex���Google ��������������������������������� dex ������������������������������������������������

    ������������������������������������������������ Dalvik dex ��������� 64k ������������������������������������������ Android ��������������������������������������������������������������������������������� dex ���������������������������������������������������

    上一篇:Java 定时器的使用:每天定时定点执行任务
    下一篇:安卓项目实战之:Activity和Fragment重新创建时状态的保存和恢复

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年04月09日 06时21分51秒