解决Android应用方法数不能超过65K问题-使用multidex来解决方法数越界

本文介绍了解决Android应用中方法数超过65536个导致的编译错误的方法。通过升级Android SDK Build Tools版本、启用multiDex、添加依赖以及重写Application基类或attachBaseContext方法来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目新版本到 1.5.0,编译打包的时候又遇到方法数超过 65K 的问题,自己又添加了一遍,记录下来,做个开始。

Android 有个限制,你的每个 App 中函数最多只能有 65536 个。这包含了 Framework、依赖的 jar 包以及应用本身的代码中的所有方法。当应用方法数超过 65536 后,编译器就无法完成编译工作并会抛出异常。


直接解决,开撸

1. Android Studio,保证 Android SDK Build Tools 21.1及以上版本,修改 build.gradle 文件,在defaultConfig 中添加 multiDexEnabled true 配置。

android {
    compileSdkVersion 24
    buildToolsVersion "25.0.1

    defaultConfig {
        applicationId "com.xxx.xxx"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 150
        versionName "1.5.0"
        multiDexEnabled true
    }
    ...
}

2. 在 dependencies 中添加 multidex 的依赖:
compile 'com.android.support:multidex:1.0.1'

3. 代码中加入支持 multidex 的功能,三种方案

第一种:在 manifest 文件中指定 Application 为 MultiDexApplication。

<application
        android:name="android.support.multidex.MultiDexApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        ...
</application>
第二种:如果你的项目中有自定义的 Application 类,让应用的 Application 继承 MultiDexApplication。

public class TestApplication extends MultiDexApplication{

    ...

}


第三种:项目中不想继承 MultiDexApplication 类,重写 Application 的 attachBaseContext(Context base) 方法,此方法比 Application 的 onCreate 要先执行。

public class TestApplication extends MultiDexApplication{

    ...

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this );
    }

    ...

}


OK,完成,同步,编译解决。

因为我项目中有自定义的 application ,故直接重写 attachBaseContext 方法即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值