E-android 编译65536问题原因及解决

本文探讨了Android应用遇到Dex文件方法数超过65536上限的问题,分析了原因,并提供了两种解决方案:通过提高targetSdkVersion或采用多 dex 文件。详细步骤包括修改build.gradle文件、添加分包库依赖以及重写attachBaseContext方法或使用MultiDexApplication。

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

 error

UNEXPECTED TOP-LEVEL EXCEPTION:  
java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 
trouble writing output: 
Too many field references: 131000; max is 65536.

 

 reason:

Dex文件方法数超过了65535的上限

 

analyze:

 solution:

1.minSdkVersion 设置为 21 或更高值,

您只需在模块级 build.gradle 文件中将 multiDexEnabled 设置为 true,如此处所示:

android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

2.minSdkVersion 设置为 20 或更低值

step1: 添加分包库依赖

 compile 'com.android.support:multidex:1.0.3'

 step2: 初始化

方法一:重写 attachBaseContext 方法

public class MyApplication extends Application {

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

方法二:直接继承MultiDexApplication

public class MyApplication extends MultiDexApplication {

     // 不需要重写attachBaseContext()

     //..........
}

data from:

https://developer.android.com/studio/build/multidex

https://www.cnblogs.com/dongweiq/p/7116326.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值