最近工作时遇到一个非常坑爹的问题,每次打包给测试的app-debug.apk总会在一部分机器上闪退,但是直接在出问题的机型上run又没有任何问题。
如果你遇到跟我一样的情况,可以往下看看,说不定能得到些提示,也欢迎跟我探讨~
闪退时的异常如下:
java.lang.RuntimeException: Unable to instantiate application package.MyApplication:
java.lang.ClassNotFoundException: Didn't find class "package.MyApplication" on path:
DexPathList[[zip file "/data/app/package-2.apk"],nativeLibraryDirectories=[/data/app-lib/package-2, /vendor/lib, /system/lib]]
...
这个问题困扰我好多天了,一开始还以为上传apk的过程中出现了问题
后来才发现Android Studio在不同的设备上通过 run app 生成的debug.apk包大小竟然不一样。。。
测试机型如下:
手机型号 系统版本 包大小
p10plus 7.0 6.21MB
红米note3 6.0.1 6.19MB
酷派8297 4.4.4 5.87MB
...
(家里还有一台Nubia系统是5.0.1,后续带来测试后会更新)
兼容情况如下:
高版本的设备运行出的apk安装在Android L以下的设备上会报错
低版本的设备运行出的apk安装在高版本设备上正常
注意:
这个BUG并非一定会出现,我的另一个项目从未出现此情况。
仔细对比了另一个项目的各项配置,基本一模一样,但另一个项目生成的debug.apk大小稳定在14.9MB。
在一篇博文中找到一个解决方案,有需要的可以参考:http://blog.youkuaiyun.com/xufazhong/article/details/71155528
我觉得这样降级的处理方式并不好,目前我的做法是生成测试所需debug.apk的时候使用 "Build" -> "Build APK" 生成,而非在设备上直接"Run"
顺带一提使用Build APK生成的debug.apk是6.15MB
如果有哪位大神了解具体原因和更好的解决方案还望告知,先谢过了~