当前位置: 首页 > news >正文

网站建设要学哪些海南搜索引擎优化

网站建设要学哪些,海南搜索引擎优化,微信公众平台做微网站吗,工作性价比计算器崩溃问题是衡量 App 质量的决定性考核标准。Android 系统会输出各种相应的 log 日志#xff0c;很大程度上降低了工程师 debug 崩溃问题的难度。如果要给 crash 日志进行分类#xff0c;可以分为2大类#xff1a;JVM 异常#xff08;Exception#xff09;堆栈信息和 nativ…崩溃问题是衡量 App 质量的决定性考核标准。Android 系统会输出各种相应的 log 日志很大程度上降低了工程师 debug 崩溃问题的难度。如果要给 crash 日志进行分类可以分为2大类JVM 异常Exception堆栈信息和 native 代码崩溃日志。 JVM 异常堆栈信息 Java 中异常Exception分两种检查异常(checked Exception)和非检查异常(unchecked Exception) 检查异常是在代码编译时期Android Studio 就会提示代码有错误无法通过编译。比如 IOException。如果没有在代码中将这些异常 catch而是直接抛出最终也有可能导致程序崩溃。 非检查异常包括 error 和运行时异常RuntimeException。AS 并不会在编译时期提示这些异常信息而是在程序运行时期因为代码错误而直接导致程序崩溃。比如 OOM 或者空指针异常NPE。 Java 异常 对于上述两种异常我们都可以使用 UncaughtExceptionHandler 来进行捕获操作。它是 Thread 的一个内部接口定义如下 对于传入的 Thread如果因为未捕获异常而导致被终止uncaughtException 则会被调用。我们可以通过它来间接捕获程序异常并进行异常信息的记录工作或者给出更友好的异常提示信息。  自定义异常处理类 自定义类实现 UncaughtExceptionHandler 接口并实现 uncaughtException() 方法。如下代码所示 需要注意的几点自定义异常处理类中需要持有线程默认异常处理类如图中红框处所示。这样做的目的是在自定义异常处理类无法处理或者处理异常失败时还可以将异常交给系统做默认处理。如果自定义异常处理类成功处理异常需要进行页面跳转或者将程序进程杀死否则程序会一直卡死在崩溃界面并弹出无响应对话框。在上面代码中通过 CrashDisplayActivity 页面来展示所捕获的异常详细信息。 一般情况下在 handleException() 方法中需要做以下几件事情 1收集 crash 的现场相关信息。如下面方法获取当前 App 的版本信息以及所有手机设备的相关信息 2日志的记录工作将收集到的信息保存在本地。比如以文件的方式保存。从下图中可以看出除了我们自己收集的日志还需要将系统抛出的异常信息也保持到文件中方便后续开发人员分析问题原因。 使用自定义异常处理类 上面我们提到的 LagouExceptionHandler 自定义异常处理类定义好之后就可以将其初始化。并将主线程注册到 LagouExceptionHandler 中。如下 最终报错的 crash 日志信息格式如下图所示 需要注意的是因为使用了文件写操作所以需要动态申请文件操作的权限。 native 异常 当程序中的 native 代码发生崩溃时系统会在 /data/tombstones/ 目录下保存一份详细的崩溃日志信息。如果一个 native crash 是必现的不妨在模拟器上重现 bug。并将 /data/tombstones 中的崩溃日志拉到本地电脑中加以分析。 比如创建一个模拟 native crash 的项目 LagouNativeCrash。项目结构如下 MainActivity 中有一个点击按钮 Button当点击此按钮时会调用 crash() 方法触发 native 代码崩溃。 native crash 在 native-lib.cpp 文件中声明如下 当点击 Button 触发 native 崩溃之后系统会在 /data/tombstones 目录下生成 tombstones 日志文件。可以在此日志文件中查看详细的保存信息。如下所示 但是如果 native crash 是偶发现象并且在模拟器上一时难以复现。那么就需要将工作交给测试工程师在真机上尝试复现。 这种情况下就需要一种机制将 native crash 现场的日志信息保存到可以访问的手机目录中。目前比较成熟使用也比较广泛的是谷歌的 Breakpad。Breadpad 是一个跨平台的开源库也可以在其 Breakpad Github 上下载自己编译并通过 JNI 的方式引入到项目中。 NDK 导入 Breakpad 在 Breakpad GitHub 官网上有一个 README Android 的介绍文件这个文件专门介绍了如何在 Android 项目中导入 Breakpad。我们可以直接使用 cmake 方式将其编译为一个静态库。 在捕获 native crash 之前需要初始化 Breakpad。主要是设置 Breakpad 保存 crash 日志的路径如下所示 图中传入的 path 就是 Breakpad 保存日志的文件目录一般情况下保存在外置 SDK 目录。 初始化好之后就可以在我们自己的 native 业务层模拟一个崩溃现场。Breakpad 会自动捕获这次 crash并将生成的 crash 信息保存在所设置的目录中。 breadpad 生成的文件是 .dmp 文件需要将其进行转换如下所示 线上崩溃日志捕获 上面介绍了 java 和 native 崩溃的捕获都是基于现场能够复现 bug 的前提。但是对于线上用户这种操作方式是不太现实的。首先不可能将一个 debug 版本的 APK 安装到终端用户的手机上其次不太可能要求用户操作一遍手机并将某一目录下的文件发送给开发人员。 对于大多数公式来说针对线上版本没有必要自己实现一个抓取 log 的平台系统。最快速的实现方式就是集成第三方 SDK。目前比较成熟采用也比较多的就是腾讯的 Bugly。Bugly 能够满足线上版本捕获 crash 的所有需求包括 java 层和 native 层的 crash 都可以获取相应的日志。并且每天 Bugly 都会邮件通知上一天的崩溃日志方便测试和开发统计 bug 的分布以及崩溃率。 其它的 crash 上报工具比如 XCrash 和 Sentry。 这两者比 Bugly 好的地方就是除了自动拦截界面崩溃事件还可以主动上报错误信息。以 XCrash 为例基本使用如下所示 可以看出 XCrash 的使用更加灵活工程师的掌控性更高。可以通过设置不同的过滤方式针对性的上报相应的 crash 日志。并且在捕获到 crash 之后可以加入自定义的操作比如本地保存日志或者直接进行网络上传。 Sentry 还有一个好处就是可以通过设置过滤来判断是否上报 crash 日志。这对于 SDK 的开发人员是很有用的比如一些 SDK 的开发商只是想收集自身 SDK 引入的 crash对于用户的其他操作导致的 crash 进行过滤。这种情况就可以考虑集成 Sentry。 总结 本次主要介绍了 Android 崩溃的相关知识。对于 Android 工程师来说crash 可以分为2类Java 层和 Native 层 Java 层一般通过自定义 UncaughtExceptionHandler 进行异常拦截 Native 层可以考虑集成谷歌的 breakpad 进行捕获并保存日志在本地 最后介绍了几个线上捕获 crash 的工具Bugly、XCrash 和 Sentry。
http://www.w-s-a.com/news/951526/

相关文章:

  • 同城网站开发实用网站模板
  • 郑州做网站哪家公司好国外购买空间的网站有哪些
  • 资讯cms网站有那些餐饮品牌策划设计公司
  • 网站策划选题网站布局优化
  • 网站建设3000字wordpress 微信 主题制作
  • 代做寄生虫网站网站菜单效果
  • 网站备案为什么这么慢目录更新 wordpress
  • 视频在线制作网站Wordpress 外链图片6
  • 网站域名后缀有什么用网站建设的投资预算怎么写
  • 化妆品网站建设网站惠州网站关键字优化
  • 保定网站制作企业下载天眼查企业查询官网
  • 中山企业网站建设公司制作一个景点的网站
  • 连云港集团网站建设株洲建设网站
  • 做运动鞋评价的网站南山做网站联系电话
  • 网站开发公众号开发海南做公司网站
  • 论企业网站建设的必要性微信小程序做一个多少钱
  • 网站制作价格是多少元上海市中小企业服务中心
  • 网站建设管理人员济宁网站建设top
  • 桂林网站建设桂林网站的元素有哪些
  • 广东网站开发推荐网页制作个人简历模板教程
  • e建网保定百度seo公司
  • 网站建设中html代码网络培训课堂app
  • 无锡做网站seo自己做的网站如何上传网上
  • 园林景观网站模板小白怎么做跨境电商
  • 找第三方做网站 需要注意企业网站带数据库
  • 北京南站到北京站flash网站制作单选框和复选框ui组件
  • 网站建设核电集团网站设计案例
  • 宝塔做的网站能不能访问上海的广告公司网站建设
  • 网站会员系统方案新能源网站建设哪家好
  • 全球网站域名域名被墙查询