APP在电脑模拟器上完美运行,真机运行时闪退现象记录

您所在的位置:网站首页 安卓dolphin模拟器闪退 APP在电脑模拟器上完美运行,真机运行时闪退现象记录

APP在电脑模拟器上完美运行,真机运行时闪退现象记录

2024-07-11 03:54| 来源: 网络整理| 查看: 265

由于疫情原因以及公司要求 在家已经呆了快两个月了,作为大四快毕业的实习生来说,这两个月肯定没有静下心来好好学习。。。哈哈哈

但是要准备写毕业论文了,所以准备把以前写过的程序当做毕业设计,于是时隔七周重新打开As 但是将APK安装到手机上时 出现了闪退现象,但是在电脑模拟器上却能正常运行。

以前出现过一次这种情况

原因 res 路径下 有 drawable 和 mipmap 两个文件夹以及其他文件夹 将图片放到了 drawable 文件夹下出现报错 解决方法 将图片放到 mipmap 文件夹中。这里需要注意 后缀名为 .xml 的图片可以放到drawable文件夹里 问题解决

当然BUG千千万万 遇到其他问题解决方法:

1.直接用数据线连接电脑 进行真机测试 开启USB调试 以及允许USB安装程序 后 通过AS查看 报错日志

2.如果手机连接电脑时AS检测不了 或者说 手机连接电脑后只能充电 那么恭喜你 肯定比 直接连线麻烦 解决办法: 1.换新手机 2.只能通过AS打出APK安装包 然后 通过QQ 发到手机上去安装 注意!!!! 需要在你的代码中建立一个打印log的类 通过手机运行 将错误信息打印在 手机中 然后查看错误信息 将打印log的类需要的代码发到下面 在这里插入图片描述

在这里插入图片描述

//手机本地存储报错信息 public class MyCrashHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { //在这里处理异常信息 saveCrashInfoToFile(e); } /** * 保存错误信息到文件中 * @param ex */ private void saveCrashInfoToFile(Throwable ex) { Writer writer = new StringWriter(); PrintWriter printWriter = new PrintWriter(writer); ex.printStackTrace(printWriter); Throwable exCause = ex.getCause(); while (exCause != null) { exCause.printStackTrace(printWriter); exCause =exCause.getCause(); } printWriter.close(); long timeMillis = System.currentTimeMillis(); //错误日志文件名称 String fileName = "crash-" + timeMillis + ".txt"; //判断sd卡可正常使用 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //文件存储位置 String path = Environment.getExternalStorageDirectory().getPath() + "/crash_logInfo/"; //上述文件地址找不到可以试下这个 // String path = MyApplication.getContext().getExternalCacheDir().getAbsolutePath() + "/crash_logInfo/"; File fl = new File(path); //创建文件夹 if(!fl.exists()) { fl.mkdirs(); } try { FileOutputStream fileOutputStream = new FileOutputStream(path + fileName); fileOutputStream.write(writer.toString().getBytes()); fileOutputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }

还需要建立一个 启动类

在这里插入图片描述

public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); mContext = this; MyCrashHandler myCrashHandler = new MyCrashHandler(); Thread.setDefaultUncaughtExceptionHandler(myCrashHandler); } private static Context mContext; public static Context getContext(){ return mContext; } }

最后在清单文件中注册

在这里插入图片描述

此时运行APP报错之后去文件管理去找对应的文件夹下的txt文档就能看到报错信息了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3