androidStudio分包引起的系统崩溃,报错ClassNotFoundException: Didn‘t find class “XXXView“ on path: DexPath../.apk
原先跑得好好的项目,在studio3里面build出来后居然在好几台Android 4.2的机器上运行不了。(Android 5以上的机器就没发现问题。)
都是一启动就爆错误:
java.lang.RuntimeException: Unable to get provider com.alibaba.sdk.android.feedback.util.FBFileProvider: java.lang.ClassNotFoundException: Didn't find class "com.alibaba.sdk.android.feedback.util.FBFileProvider" on path: DexPathList[dexElements=[zip file "/data/app/com.boosj.boosjapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.boosj.boosjapp-1, /vendor/lib, /system/lib]]
配置调了半天并没有什么卵用。
后来搜到一篇文章说是多重dex加载机制上的问题。
解决方法如下。
1、在module下的build.gradle文件 ,添加multiDexEnabled true
除了在build.gradle的defaultConfig里配置multiDexEnabled true外,还要在dependencies内加入implementation 'com.android.support:multidex:1.0.0'
defaultConfig {multiDexEnabled true}dependencies {implementation 'com.android.support:multidex:1.0.0'
}
defaultConfig {applicationId "com.kakaxi.xx"minSdkVersion 14targetSdkVersion 22versionCode 1versionName "1.0.1"multiDexEnabled truetestInstrumentationRunner "android.test.InstrumentationTestRunner"
2、在android节点内部添加jumboMode = true
dexOptions {javaMaxHeapSize "4g" jumboMode = true
}
3、添加分包依赖,谷歌官方推出了multidex兼容包,配合AndroidStudio实现了一个APK包含多个dex的功能
compile 'com.android.support:multidex:1.0.1'
//或者implementation 'com.android.support:multidex:1.0.0'
4、让自己的Application继承MultiDexApplication类,或者在Application下重新attachBaseContext(Context base)方法,初始化 MultiDex.install(this);如何下图
@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(base);MultiDex.install(this);}
搞定,收工。
其实原理还没整明白,改天翻一下源码理解一下。
补充说明,偶尔修改类文件名之后也会报DexPathList相关的错误,这种一般clear project再rebuild project就可以解决了。
附加
如何查看apk方法数
方法一:dexdump -f apkName.apk | findstr method_ids_size
dexdump.exe直接用android_sdk\build-tools下的,用高版本下的,低版本有的有问题,dexdump.exe和apk放同一目录下,方式运行;
方法二:采用dex-method-counts.jar
java -jar dex-method-counts.jar apkName.apk
注意dex-method-counts.jar 和apk的完整路径
androidStudio分包引起的系统崩溃,报错ClassNotFoundException: Didn‘t find class “XXXView“ on path: DexPath../.apk相关推荐
- 太爽了今天解决了大问题!——LOL英雄联盟读条后崩溃报错error,错误LOL_public……一下午终于解决
LOL英雄联盟读条后崩溃报错error,错误LOL_public-- 背景:是这样,前一天LOL退出时被我强退了,接着今天一如既往学了会python然后打算下把棋(云顶之弈),对了在这之前还搞了下自己 ...
- Win7系统经常报错怎样解决?
最近Win7系统经常报错,但不知道什么原因做成,又不想重装系统,如何找出报错的原 其实我们可以通过事件查看器查看错误日志,可以了解造成系统错误的具体原因! 1.在"开始"中右键,找 ...
- SAP WM LI04 试图去打印一个已经完成盘点流程(清账)的盘点单, 系统会报错!
SAP WM LI04 Print Physical Inventory Document - Inventory record 30 already cleared – LI04 试图去打印一个已经 ...
- 关于win10系统还原报错的解决方案
** 关于win10系统还原报错的解决方案 ** 今天我重装Oracle时,老是报错,上网搜了一些解决方案,懵懵懂懂,想起装之前在系统上创建了还原点,何不还原它呢? 但还原操作时遇到了这样的问题: 卷 ...
- AndroidStudio调用百度地图SDK,报错:errorcode: 200 uid: -1 appid -1 msg: APP不存在
AndroidStudio调用百度地图SDK,报错:errorcode: 200 uid: -1 appid -1 msg: APP不存在 我傻了,抄了官网的代码没有把开发者key复制到Android ...
- 安装ubuntu系统,报错WslRegisterDistribution failed with error: 0x8007019e
在windows应用商店安装ubuntu系统,报错WslRegisterDistribution failed with error: 0x8007019e 1.报错: Installing, thi ...
- React引入组件并使用 但系统一直报错说引入但没有使用 (问题解决方法)
先来看一下我遇到的问题 这里明显使用了这个组件 但系统一直报错 说我们没有使用 react应用遇到这种问题 将首字母改成大写就解决了 认真确认后 简单说 就是将首字母改成大写 项目就可以跑起来 挺奇葩 ...
- Centos7系统重装报错“ /dev/root does not exist“解决办法
Centos7系统重装报错" /dev/root does not exist"解决办法 一.报错场景 二.报错提示 三.报错分析 四.解决方法(理论) 1.解决方法1 2.解决方 ...
- Windows 7系统开机报错ERROR 0199
Windows 7系统开机报错 ERROR 0199:System Security-IBM Security password retry count exceded. 解决办法:按F1进BOIS再 ...
最新文章
- php禁止代理ip访问_php禁止某ip或ip地址段访问的方法
- 中国企业云计算应用现状及需求
- HTML textarea 标签
- 使用JAVA来获得本日,本周,本月,本年的时间信息
- 改SB训练数据的名字
- [NAACL16]RNN文法
- 前端基础学习之CSS选择器
- Android 5.1 memory leak,Android 性能优化之使用MAT分析内存泄露问题
- 在电子政务项目中如何应付长官意识和拖沓的工作作风?
- DDOS---低轨道离子炮具体使用
- 如何卸载Adobe Premiere Pro CC 2017和Adobe Photoshop CC 2018
- MS17010原生打法
- 种草营销这样干 小红书KOC素人和KOL达人组合种草推广
- php 导出excel 设置列宽,php – 导出Excel文件时调整列宽
- 泛泛而谈的渲染学习记录(一)—— 描边中的轮廓边缘
- 计算机控制系统第2次作业,201609计算机控制系统作业2
- java的博_小博老师解析Java核心技术 ——I/O流
- Spark任务执行流程
- 汇通达IPO遇冷:募资缩水至3亿美元 汪建国与阿里是股东
- Hexo阶段三 -- 将Hexo部署到github
热门文章
- app营销变现系统,让你的app更值钱!
- SMDS:交换式多兆位数据服务--网络大典
- Win8系统flash无法播放视频怎么办?
- 一款功能强大的 IP 查询工具!开源,放心用
- 【转载】NetLogic买断多核芯片公司RMI
- 基于java的CRM客户关系管理系统的设计与实现
- 分布式系统和网络系统
- 机器视觉检测助力软包动力电池检测
- python+selenium 自动定时发QQ说说
- 【C++】约瑟夫环问题:任给正整数n和k,按下述方法可以得到1,2, …n的一个置换:将数字1,2,…,n环形排列,按顺时针方向自1开始报数,报到K时输出该位置上的数字,并使其出列。