zoukankan      html  css  js  c++  java
  • 解决Android Studio 生成的Apk在手机运行报错问题

    由于最近将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发送到手机,再次安装,安装成功,正有点小激动呢,结果应用一点开一个更让人费解的事情诞生了


    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]]

    这个异常很明显是说,系统试图从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,发现一个神奇的功能,于是就这样问题迎刃而解了,所以,有的坑总是要去填的,如果我们都不抱着想要解决的决心和耐心,那么这个坑也许就永远落脚下了。

    这里写图片描述

  • 相关阅读:
    这次面试就差不多了,你有什么问题需要问我呢?
    C++为啥要使用new
    C#读取“我的文档”等特殊系统路径及环境变量
    C++11 Lambda表达汇总总结
    c#计算 坐标点与坐标点之间的距离
    eclipse svn同步资源库时忽略某些不需要提交文件类型和文件夹
    通俗理解TCP/IP协议三次握手四次分手流程
    mysql 免安装版 启动服务马上关闭
    MySQL数据库安装与配置详解
    word 插入的图片被嵌套在文字底下
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781728.html
Copyright © 2011-2022 走看看