打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android Stido配置MultiDex解决65k问题,kotlin协程

dependencies {

...

//支持multidex

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

}

代码配置:

第一种,Application直接继承MultiDexApplication(针对没有Application父类的)

public class GlobalApplication extends MultiDexApplication {

...

}

第二种,重写attachBaseContext(针对已有Application父类的)

public class MyApplication extends GlobalApplication {

...

@Override

protected void attachBaseContext(Context base) {

super.attachBaseContext(base);

//支持multidex

MultiDex.install(this);

}

}

使用MultiDex的最低版本要求是:

compileSdkVersion 21

buildToolsVersion "21.1.0"

可能遇到的问题:NoClassDefFoundError

有些类没有直接引用而并没有打包到dex当中导致classes not found出错,这是在开启multiDex时,多个dex文件中的类是被gradle脚本分配的,而且app在启动时,首先加载的是MainDex。

Android SDK Build Tools 21.1 或者更高版本中的 Gradle Android 插件有对 multidex 的支持。这个插件使用 Proguard 来分析你的项目并在 [buildDir]/intermediates/multi-dex/[buildType]/maindexlist.txt文件中生成一个 app 启动 classes 的列表。但是这个列表并不是100%准

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

浏览器打开:qq.cn.hn/FTe 开源分享

确,可能会丢失一些app启动所需的 classes 。

有时候我们需要设定某些类被放到MainDex中避免NoClassDefFoundError错误, 在build.gradle中开启multiDex,并指定配置文件:

android {

...

defaultConfig {

...

//支持multidex

multiDexEnabled true

multiDexKeepProguard file('multiDexKeep.pro') // keep specific classes using proguard syntax

multiDexKeepFile file('multiDexKeep.txt') // keep specific classes

}

}

注意multiDexKeep.pro和multiDexKeep.txt文件需要自己创建,放在项目的app文件夹下

配置multiDexKeep.pro文件(语法和proguard-rules.pro一样,作用也是混淆相关)

-keepclassmembers class fqcn.of.javascript.interface.for.webview {

public *;

}

配置multiDexKeep.txt文件,指定类即可,这个是保留在MainDex里的类

android/support/design/widget/BaseTransientBottomBar$Behavior.class

android/support/v7/widget/RecyclerView$6.class

android/support/v4/app/FrameMetricsAggregator$MetricType.class

com/transitionseverywhere/Slide$GravityFlag.class

android/support/v7/view/menu/CascadingMenuPopup$3.class

android/support/annotation/VisibleForTesting.class

android/support/v4/media/session/MediaSessionCompatApi21.class

android/support/v4/view/ViewCompat$ViewCompatApi26Impl.class

android/support/v4/view/ViewCompat$ScrollAxis.class

android/support/v4/view/ViewCompat$ViewCompatApi19Impl.class

com/bumptech/glide/annotation/GlideType.class

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
突破64K方法数的限制
美团Android DEX自动拆包及动态加载简介
Android Context完全解析,你所不知道的Context的各种细节
关于APP程序员泡沫经济
热修复——Tinker 的集成与使用
androidstudio MultiDex慎用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服