Android 超方法数dex分包

方法数超过 65,536,可使用MultiDex分包(注意:仅在minSdkVersion 设为 20 或更低版本情况下)

1.在build.gradle配置依赖以及开启

android {
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 33
        multiDexEnabled true
    }
}

dependencies {
    implementation "androidx.multidex:multidex:2.0.1"
}

2.使用MultiDexApplication

1)如果您不替换 Application 类:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
        android:name="androidx.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>

2)如果您替换 Application 类

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

注意:在 

MultiDex.install() 完成之前,不要通过反射或 JNI 执行 

MultiDex.install() 或其他任何代码。MultiDex 跟踪功能不会追踪这些调用,从而导致出现 

ClassNotFoundException,或因 DEX 文件之间的类分区错误而导致验证错误。

3.声明主 DEX 文件中必需存在的类

1)创建一个名为 multidex-config.pro 的文件(文件采用与 ProGuard 相同的格式,并且支持全部 ProGuard 语法)

android {
    buildTypes {
        release {
            multiDexKeepProguard file('multidex-config.pro')
            ...
        }
    }
}

2)指定类:

-keep class com.example.MyClass
-keep class com.example.MyClassToo

3)指定包所有类:

-keep class com.example.** { *; } // All classes in the com.example package

注意:如果您的 minSdkVersion 设为 21 或更高版本,系统会默认启用 MultiDex,并且您不需要 MultiDex 库。

Android 5.0(API 级别 21)及更高版本使用名为 ART 的运行时,它本身支持从 APK 文件加载多个 DEX 文件。ART 在应用安装时执行预编译,这会扫描查找 classesN.dex 文件,并将它们编译成单个 OAT 文件,以供 Android 设备执行。因此,如果您的 minSdkVersion 为 21 或更高版本,系统会默认启用 MultiDex,并且您不需要 MultiDex 库。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值