开启 Multidex 功能

前言

最近的项目遇到了方法数过多的问题,实际自己的代码也没多少,无奈引入了别人的库,之前写依赖冲突的博客里面也提到了 multidex 的设置,这里详细写一下吧!

步骤 1:更改 build.grade

引入 multidex 库,在 app 的 build.grade 钟设置开启 multidex

defaultConfig {
    ...
    // Enabling multidex support.
    multiDexEnabled true
}

dependencies {
    ...
    implementation 'com.android.support:multidex:1.0.1'
    //或androidx支持库的multidex库
    implementation 'androidx.multidex:multidex:2.0.1'
}

步骤 2:设置 Application 类

如果没什么特别需求,可以直接继承 MultiDexApplication 来实现

public class MyApplication extends MultiDexApplication {
	... 
}

如果已经有自定义的 Application,没法使用继承,可以自建一个 MyApplication 类继承原有 Application,在 onCreate 钟初始化 multidex。

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this);
    }
}

步骤 3:修改 AndroidManifest

在 manifest 里面设置刚刚自定义的 application

    <application
        android:name="com.xxx.MyApplication"
        android:allowBackup="false"
        android:usesCleartextTraffic="true"
        android:icon="${xxxicon}"
        android:label="${xxxapp}"
        android:theme="@style/AppTheme"
        tools:targetApi="m"/>

如果不需要自定义 application 的话可以直接设置 android:name 为 MultiDexApplication

    <application
        android:name="android.support.multidex.MultiDexApplication"
        android:allowBackup="false"
        android:usesCleartextTraffic="true"
        android:icon="${xxxicon}"
        android:label="${xxxapp}"
        android:theme="@style/AppTheme"
        tools:targetApi="m"/>

ps. 这里看你用的 support 库或者 androidx 库

原因介绍

随着 Android 平台的持续成长,Android 应用的大小也在增加。当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 Android 应用构建架构的极限。早期版本的构建系统按如下方式报告这一错误:

Conversion to Dalvik format failed:Unable to execute dex: method ID not in [0, 0xffff]: 65536

超过最大方法数限制的问题,是由于DEX文件格式限制,一个DEX文件中method个数采用使用原生类型short来索引文件中的方法,也就是2个字节共计最多表达65536个method,field/class的个数也均有此限制。对于DEX文件,则是将工程所需全部class文件合并且压缩到一个DEX文件期间,也就是Android打包的DEX过程中, 单个DEX文件可被引用的方法总数(自己开发的代码以及所引用的Android框架、类库的代码)被限制为65536。

官方说明

Google官方:为方法数超过 64K 的应用启用 MultiDex

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值