Android Studio-2.3 打包运行App报错问题。
2017-03-20 13:17
351 查看
由于最近将Android Studio-2.2升级至2.3了,一直用测试机编译应用,未发现任何异常,可是今天突然发现一个小意外,也是真令人头疼。
今天直接用我自己的手机Run,Studio一直提示安装失败,提示错误:
Installation failed with message Failed to establish session. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. WARNING: Uninstalling will remove the application data! Do you want to uninstall the existing application? 原文翻译: 安装失败,消息未能建立会话。 这是可能的,这个问题解决通过卸载APK现有的版本,如果真的存在,然后重新安装。 警告:卸载会删除应用程序数据! 是否要卸载现有应用程序?
点击确定后会卸载与此应用同包名应用,然后就没有然后了,这时我也很费解,不过想想我的手机是小米5,Android版本7.0,由于MIUI ROM定制原因,我第一时间想到的是MIUI的Bug或者Android7.0的Bug,所以也就没想那么多,直接将apk发送到手机,再次安装,安装成功,正有点小激动呢,结果应用一点开一个更让人费解的事情诞生了:
03-20 12:56:37.933 18274-18274/com.app.chao.chaoapp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.app.chao.chaoapp, PID: 18274 java.lang.RuntimeException: Unable to instantiate application com.app.chao.chaoapp.App: java.lang.ClassNotFoundException: Didn't find class "com.app.chao.chaoapp.App" on path: DexPathList[[zip file "/data/app/com.app.chao.chaoapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.app.chao.chaoapp-1/lib/arm64, /data/app/com.app.chao.chaoapp-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] at android.app.LoadedApk.makeApplication(LoadedApk.java:806) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5393) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:160) at android.app.ActivityThread.main(ActivityThread.java:6143) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.app.chao.chaoapp.App" on path: DexPathList[[zip file "/data/app/com.app.chao.chaoapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.app.chao.chaoapp-1/lib/arm64, /data/app/com.app.chao.chaoapp-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:380) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.Instrumentation.newApplication(Instrumentation.java:993) at android.app.LoadedApk.makeApplication(LoadedApk.java:800) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5393) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1564) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:160) at android.app.ActivityThread.main(ActivityThread.java:6143) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)
这个异常很明显是说,系统试图从nativeLibraryDirectories中加载指定的so文件,但没找到。我原先的想法,如果arm64-v8a中找不到,系统应该到armeabi中去找,毕竟armeabi是个缺省的so目录。但实际结果貌似不会去armeabi中查到。
于是开始各种百度ClassNotFoundException,得到的答案大多是,需要的jar没有引入,或者v4包冲突,这时我也很无奈,只得百度nativeLibraryDirectories=[/data/app/lib/arm64,这时看到很多国外论坛,其中一个国外大大谈到:
建议直接打开(解压缩的形式)生成的apk文件,查看是否有”不合理”的目录存在。在我的情况中的确看到了arm64-v8a目录。目录中有一个其他第三方的so文件,最后问题由于依赖项目有个arm64-v8a目录,所以如果要移除某个类目,一定要删干净。
但是奇怪的是,删除arm64-v8a目录之后,运行也出错。按照简单理解,arm64-v8a目录已经没有了,应该不会在从arm64目录中找so才是。除非,系统根据手机abi指定目录加载,然而实际不是。
于是copy备份项目后,删除so相关的代码和引用,运行依然报错,至此国外大大也帮不了我。
这时我已经在崩溃边缘了,后来总觉得哪里不对,吃了个午饭回来后,直接手动新建一个新的项目,直接运行hello world项目依然报错,这时我基本已经锁定原因了,因为既然这样都不能运行,那么问题很大几率出现在开发工具上,所以直接对比当前版本和旧版本的Android Studio,发现一个神奇的功能,于是就这样问题迎刃而解了,所以,有的坑总是要去填的,如果我们都不抱着想要解决的决心和耐心,那么这个坑也许就永远落脚下了。
相关文章推荐
- Android Studio-2.3 打包运行App报错问题
- Android Studio-2.3 打包运行App报错问题。
- 解决Ubuntu 16.04 上Android Studio2.3上面运行APP时提示DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs的问题
- Android 签名打包后的APP在后台运行时按icon导致程序重启的奇葩问题解决
- Android Studio 2.3 签名打包问题
- app 开发及其android studio 打包遇到的问题总结(二)
- Android Studio 升级到2.3版本后Run项目不能自动启动APP的问题
- 利用HBuilder将vue项目打包成移动端app,运行页面空白问题解决
- Android Studio 2.3打包 release 版本后无法安装的问题
- android studio 2.3 签名打包问题
- Android Studio 2.3 签名打包问题
- Android Studio 2.3版本 Run项目不能自动启动APP的问题 (转)
- Android Studio开发APP,同时使用了百度地图和腾讯云通信,打包之后APP运行崩溃,分开打包运行正常
- 更新到android studio2.0后,运行时出现一个问题:Error running app: Instant Run requires 'Tools | Android | Enable AD
- android studio 2.3运行项目,不会自动进入APP界面--binbinyang
- android studio2.3以后给apk签名打包后安装失败的问题[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
- 解决Android Studio 2.3无法在小米手机上运行程序的问题
- 《Android Studio开发实战 从零基础到App上线》源码运行问题解答
- Android Studio升级到2.3.1,小米MI无法安装apk,安装失败,闪退,即时运行 失败,Session 'app': Error Installing APKs,问题解决办法
- Android studio2.3打包应用APK安装报错问题