instant run 导致 ClassNotFoundException ,意外吧?
来源:互联网 发布:微信电影网站源码 编辑:程序博客网 时间:2024/05/21 06:34
Bug场景:
adb调试时 ,apk正常安装运行无问题。这个问题困扰了我1天。
然而我将apk移动到手机,手动安装运行时就会爆出ClassNotFoundException,异常日志如下:
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.wyb.arcgislocation1029.MapActivity" on path: DexPathList[[zip file "/data/app/com.example.wyb.arcgislocation1029-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.wyb.arcgislocation1029-1/lib/arm, /data/app/com.example.wyb.arcgislocation1029-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
查到的原因和解决办法:
我查边所有资料,有很多说法:
1、 manifest中name路径书写不对的,但是这会在studio自动检查语法时就会报红,排除。
2、引用相同包,但版本不同。我没有引用包。
3、so包引用时,两个第三方库的 so包冲突:
成因第一部分:当项目里有arm-v7目录时,系统会严格遵循最优适配原则,当遇到arm-v7的cpu时,只去arm-v7目录查找so库。
成因第二部分:merge原则,当打包时,studio会把各个module进行合并,例如manifest文件。它也会合并arm-v7目录,可以想象——如果第三方依赖A和B,A指定了arm-v7里的so包,B没有指定arm-v7里的so包,那么合并的结果时最终的apk里的arm-v7目录里只有A的so包。
于是在遇到arm-v7的cup时,B就悲催的找不到自己的so包了——找不到类。
真实原因和解决办法:
但是我的问题都不是这些导致的。真正的原因很无奈,是studio的 Instant Run 功能导致的。
这个功能在我之前使用的studio版本里并没有,所以它里面具体做了什么,我并不清楚 ,我只是怀疑它坏了我的事。所以把它关了。
关闭流程:file——setting——build、execution、deployment——Instant Run
然后我的apk就可以正常手动安装运行了。
结语:
对工具和api的更新要有所了解,对新功能要选择性的使用。
- instant run 导致 ClassNotFoundException ,意外吧?
- Instant Run导致ClassNotFoundException
- Instant Run导致的java.lang.ClassNotFoundException错误
- instant run开启导致程序不能运行
- Instant Run
- Instant Run
- Retrofit2.0 和Instant Run 冲突导致 java.lang.ArrayIndexOutOfBoundsException
- 解决Android Studio的Instant Run导致的错误
- 解决Android Studio的Instant Run导致的错误
- 解决Android Studio的Instant Run导致的错误
- 解决Android Studio的Instant Run导致的错误
- Instant run会造成打包的apk中代码缺失,报java.lang.ClassNotFoundException
- Instant Run 浅析
- Instant Run实现原理
- Instant Run详解
- Instant Run 23事
- Instant Run 浅析
- Instant Run浅析
- Android View 仿iOS SwitchButton [Material Design]
- 94-ICMP 协议(回显请求与应答)
- layer.msg(content, options, end)
- 实现菜单之ActionMode
- Objective-C Foundation
- instant run 导致 ClassNotFoundException ,意外吧?
- 分享一个免费自动发帖软件,免费自动发布信息软件
- 单词翻转
- 用对象的思想递归求解《母牛的故事》问题
- 插入排序
- uC/OS-II源码解析(os_cpu.h)
- 2004年分区联赛普级组之四 火星人(dfs)
- 13个人围成一圈喊道3的退出 求最后一个人的序号
- 最简单易懂最深刻的数据库讲解