首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

01.Android崩溃Crash封装库

手机信息,app信息,崩溃堆栈,内存信息等 5.异常崩溃如何友好退出,以及崩溃后调用重启app是否会出现数据异常 6.针对native代码崩溃,如何记录日志写到文件中 该库可以做一些什么 1.在Android...2.对于某些设备,比如做Kindle开发,可以设置崩溃重启app操作 3.暴露了用户上传自己捕获的crash数据,以及崩溃重启的接口监听操作 4.一个崩溃日志保存到一个文件中,文件命名规则【版本+日期+...支持用户获取崩溃列表,以及跳转崩溃日志详情页面,并且可以将崩溃日志分享,截长,复制等操作。...Android/data/你的包名/cache/crashLogs日志文件命名:V1.0_2020-09-02_09:05:01_java.lang.NullPointerException.txt【版本...某些机型还是不兼容…… App崩溃收集信息说明 收集崩溃时的基本信息 进程(前台进程还是后台进程) 线程(是否是 UI 线程) 崩溃堆栈(具体崩溃在系统的代码,还是我们自己的代码里面) 崩溃堆栈类型(Java

95730

Android 移动应用性能优化 之 友盟

我之前遇到的问题就是我在启动页用了一个高清,然后在我的手机上正常运行,然后在一个读者的手机上就直接闪退了。报错的如下:   从这个能看出什么内容呢?   ...NullPointerException   NullPointerException(空指针异常),我相信用JavaAndroid的朋友肯定遇到过找个问题,那就是null,常说的空对象。...所以使用Java开发Android的时候要特别注意这一点,注意null。这一点Kotlin就做的很好,因为空安全这个特性。...② 崩溃分析   完成了SDK对接之后,即可使用Java、Native崩溃分析、ANR分析功能,无需额外其他接入操作。...最后这个自定义字段,很明显就是在代码中写的一个崩溃的回调。   这说明我自己写的日志也上传了。

38510
您找到你想要的搜索结果了吗?
是的
没有找到

01.崩溃捕获设计实践方案

01.崩溃捕获设计实践方案 01.整体介绍概述 1.1 项目背景介绍 Android的稳定性是Android性能的一个重要指标,它也是App质量构建体系中最基本和最关键的一环。...有些bug如果找不到,那么思考能否上传info日志,通过技术埋点去排查崩溃链路问题。 1.4 设计目标 能够准确将崩溃日志写到本地文件 能够捕获到崩溃日志,然后把它通过io流写入到file文件中。...可以避免闪一下…… 2.6 崩溃流程叙述 App崩溃流程 图片 崩溃流程叙述 1、首先发生crash所在进程,在RuntimeInit创建之初便准备好了defaultUncaughtHandler,用来来处理...(View.java:7164) at android.view.View.access$3500(View.java:813) at android.view.View$PerformClick.run...(Handler.java:100) at android.os.Looper.loop(Looper.java:230) at android.app.ActivityThread.main

31920

抖音 Android 性能优化系列:Java 内存优化篇

抖音 Java OOM 背景 在未对抖音内存进行专项治理之前我们梳理了一下整体内存指标的绝对值和相对崩溃,发现占比都很高。...其中 pthread_create 和 fd 数量不足均为 native 内存限制导致的 Java崩溃,我们对这部分的内存问题也做了针对性优化,主要包括: 线程收敛、监控 线程栈泄漏自动修复 FD...图片链路 图片我们过滤了图片库等无效引用且对 Android 8.0 以下的大在线下进行了还原。 ?...系统异步 UI 泄漏 根据上传聚合的引用链我们发现在 Android 6.0 以下有一个 HandlerThread 作为 GCROOT 持有大量 Activity 导致内存泄漏,根据引用发现这些泄漏的...针对该问题,我们通过反射获取非主线程的 ThreadLocal,在每次异步渲染完主动清理内部的 RunQueue。 ? 13.

1.8K40

有赞 Android 崩溃保护的探索及实践

概述 Android 的 Crash 是件让人头疼的事,测试阶段好好的代码一上线就各种崩溃,即使是一个微不足道的 bug 也得发个 hotfix。...很多时候我们更希望即使个别功能没法使用也不要崩溃,比如点击图片想看大图时,由于 onClick 回调中没做判空处理等导致 APP 崩溃了,这时我们更希望即使不能看大图也不要崩溃,这时你可以考虑使用 Bandage...Bandage可以最大程度保证 APP 可用,任何 Java 异常都不会导致 APP 崩溃。 Bandage试图在 APP 即将崩溃时尽量去挽救,不至于情况更糟糕(医生,我觉得我还可以再抢救一下)。...每次主线程抛出异常时就会被我们的 try catch 捕获到,然后又进入了 while 循环。...效果 ? 码链接 https://github.com/android-notes/Cockroach/tree/X

1.2K20

APK瘦身-是时候给App进行减负了!

需要对一个App进行瘦身,首先最重要的就是对App大小有一个大致的了解,最直观看到App的大小就是通过Android Studio自带的Analyzer进行APK的分析。...例如如果引入的so需要下载上传功能而多引入了一个cURL库导致so增大,这时就可以让Java层代码定义接口,让so来调用,从而避免引入cURL库;再如Fresco库,如果不需要webP,或者不需要webP...只保留一套 因为Android设备在加载图片时会优先加载对应分辨率文件夹下的图片,如果对应分辨率文件下没有所要的图片,则找高分辨率对应文件夹下的图片。...如下图6和7所示,6是压缩前的效果,7是压缩完的效果,如果是资源比较多的App,压缩效果也是立竿见影。 ? ? 使用方法也是非常简单,在build.gradle文件中进行如下配置即可: ?...6.dex文件压缩 Dalvik是Android平台运行时的环境,但是Dalvik虚拟不支持直接执行Java的字节码,所以会对编译生成的 .class 文件进行翻译、重构、解释、压缩等处理,这个处理过程是由

1.1K30

美团外卖Android Crash治理之路

系统级Crash治理 众所周知,Android的机型众多,碎片化严重,各个硬件厂商可能会定制自己的ROM,更改系统方法,导致特定机型的崩溃。...大监控 上面讲到大对象是导致OOM的主要原因之一,而Bitmap是App里最常见的大对象类型,因此对占用内存过大的Bitmap对象的监控就很有必要了。...外卖App中除静态资源外,所有图片都要求发布到专用的图片CDN服务器上,加载图片时使用正则表达式匹配URL,除了限定CDN域名之外还要求所有图片加载时都要添加对应的动态缩放参数。...除此之外还需要一些其他的监控,例如,之前提到的大监控,来避免因为大导致的OOM。具体的输出形式主要有邮件通知、IM通知、报表。 ?...但面对国内非富多彩的Android系统环境,在体量百万级以上的的App中几乎不可能实现毫无瑕疵的技术方案和组件,所以一般情况下如果某个技术实现方案可以达到0.01‰以下的崩溃率,而其他方案也没有更好的表现

1.1K30

Bugly使用篇之Java错误堆栈还原

前言 前面介绍了 Android混淆代码错误堆栈还原,相信大家已经知道如何通过Retrace在本地进行混淆代码还原了,上一篇提到,如果崩溃异常很多,你总不能一个一个去手动还原吧,不觉得这样做很没有效率么...,有没有想过如果能实现线上监控崩溃并且能上传mapping文件进行快速还原,而不需要自己手动去做这样的一件事?...线上还原 通过集成我们Bugly SDK,就能在线上监控你的app崩溃情况,一有崩溃发生就会上报到平台,我们制造一个Crash,看它在Bugly平台的表现: ?...这里有个问题,每次都要上传mapping文件会不会很麻烦,能不能实现自动上传符号表?当然可以,Bugly早已帮你实现自动上传符号表的插件,详情的话看符号表配置。...总结 对代码进行混淆可以减少被破解的风险,也能达到对代码优化的作用,但如果发生了崩溃了就比较难定位问题,不过android中可以通过mapping文件进行反推,人工来做这件事的话会比较费时,所以使用Bugly

2K30

Android Crash之Java Crash分析

本系列博文主要是想跟大家分享一下在Android平台中如何进行Crash分析并解决问题并告诉大家如何通过bugly进行崩溃捕获快速定位问题。 什么是Crash?...这里我们进行一些概念上的普及: Crash就是由于代码异常而导致App非正常退出现象,也就是我们常说的『崩溃Android中有哪些类型Crash 通常情况下会有以下两种类型Crash: Java Crash...Java Crash在Android上的特点 这类错误一般是由Java层代码触发的 一般情况下程序出错时会弹出提示框,JVM虚拟机退出 一般的Crash工具都能够捕获,系统也提供了API 举个栗子 ?...如果程序发生异常,就会将异常写入到指定文件中,日志的格式你可以自己指定,如果有上传服务器记录crash的需求就可以通过POST方式将文件上传,具体实现方式跟后台沟通即可。 最终的效果如下: ?...,比如你使用了第三方的so库,如果发生崩溃了,你也会崩溃的。

1.2K20

解读 美团外卖Android Crash治理之路

系统级Crash治理 众所周知,Android的机型众多,碎片化严重,各个硬件厂商可能会定制自己的ROM,更改系统方法,导致特定机型的崩溃。...比如当API返回空值、空数组或返回不是约定类型的数据,App收到这些数据,就极有可能发生空指针、数组越界和类型转换错误等Crash。而且这样的脏数据,特别容易引起线上大面积的崩溃。...大监控 上面讲到大对象是导致OOM的主要原因之一,而Bitmap是App里最常见的大对象类型,因此对占用内存过大的Bitmap对象的监控就很有必要了。...外卖App中除静态资源外,所有图片都要求发布到专用的图片CDN服务器上,加载图片时使用正则表达式匹配URL,除了限定CDN域名之外还要求所有图片加载时都要添加对应的动态缩放参数。...但面对国内非富多彩的Android系统环境,在体量百万级以上的的App中几乎不可能实现毫无瑕疵的技术方案和组件,所以一般情况下如果某个技术实现方案可以达到0.01‰以下的崩溃率,而其他方案也没有更好的表现

99620

Jetpack WorkManager 看这一篇就够了~

中添加代码如下所示: def work_version = "2.7.1" implementation "androidx.work:work-runtime-ktx:$work_version" 如果使用的是Java...不过我的手机是Android 12的,为了确保没问题,我们必须在Android 11 或低版本上执行一次。没崩溃,但是任务却没执行,我们看到了错误日志如下图所示。 Emm.....如果未能实现对应的 getForegroundInfo 方法,那么在旧版平台上调用 setExpedited 时,可能会导致运行时崩溃。...由于政策为 LINEAR,每次尝试重试时,重试间隔都会增加约 10 秒。...我们可以看到,第一次任务失败后延迟了10秒重新执行,第二次延迟了20秒,第三次延迟了40秒... 观察工作执行结果 在任务完成后,我可能需要进行更新UI或者业务逻辑操作。

1.2K20

Android 移动应用性能优化 之 友盟

我之前遇到的问题就是我在启动页用了一个高清,然后在我的手机上正常运行,然后在一个读者的手机上就直接闪退了。报错的如下:   从这个能看出什么内容呢?   ...NullPointerException   NullPointerException(空指针异常),我相信用JavaAndroid的朋友肯定遇到过找个问题,那就是null,常说的空对象。...所以使用Java开发Android的时候要特别注意这一点,注意null。这一点Kotlin就做的很好,因为空安全这个特性。...② 崩溃分析   完成了SDK对接之后,即可使用Java、Native崩溃分析、ANR分析功能,无需额外其他接入操作。...最后这个自定义字段,很明显就是在代码中写的一个崩溃的回调。   这说明我自己写的日志也上传了。

55530

Android十八章:Dalvik和Art区别

前言,安卓可以运行多个app,对应运行了多个dalvik实例,每一个应用都有一个独立的linux进程,独立的进程可以防止虚拟机崩溃造成所有程序都关闭。...就像一条电灯泡上的电灯都是并联关系的,一个灯泡坏了其他灯泡不受影响,一个程序崩溃了其他程序也不受影响。 Android 虚拟机 安卓的虚拟机是啥?...Dalvik dalvik是一个跑在android手机上的一个java虚拟机,他是将java字节码转化为android手机系统的机器语言,在内存足够大,可以跑多个dalvik实例,并且互不影响。...每次运行程序都要将java字节码转化为android系统机器语言。占用rom空间比Art小。 Art Art也是一个跑在android手机上的一个java版本,是dalvik2.0版本。...他能够在第一次安装的时候把java字节码全部转化为android系统机器语言。以后每次打开应用都不用再次编译java字节码了,打开速度快,运行效率高,省电。占Rom体积大。

92630

Android 加载图片占用内存分析

布局文件activity_main.xml 布局文件,就是一个ImageView控件,包含一张背景。...在回答这个问题前,你要搞清楚,google在图片加载时候,不同的Android版本,做了native堆栈和Java堆栈的区分。...这里也有个有意思的现象,在Android4.4到Android 8.0以下的机器,当你把这个图片放在不同的文件夹下面时,图片占据的内存是不一样的,那是因为图片内存的加载,是在Java 堆栈,所以你可能会遇到...这个内存足以使官网app在本来使用内存就高的情况下闪退。...看一下加载这个本地图片时的内存情况,从 320M 到 548M,飙升228M(还有后台事件带来内存波动,引起闪退的根本原因是Graphics的内存飙升)。 怎么解决崩溃

2.3K20

Android开发(第一行代码 第二版) 常见异常和解决办法(基于Android Studio)(二)

文章目录 1.Glide:You must pass in a non null View 2.Android studio项目崩溃报Binary XML file line #2: Error inflating...must pass in a non null View 在自定义Dialog的时候,用Glide加载图片时报了一下异常 Caused by: java.lang.IllegalArgumentException...2.Android studio项目崩溃报Binary XML file line #2: Error inflating class类错误 可能的原因:找不到资源文件: 系统会根据分辨率来选择加载不同...5.为APP设置启动欢迎界面,AndroidStudio添加启动界面之后闪退 解决办法: 将启动的第一个页面设置为XXXActivity,同时,将原来的主活动文件添加到其下面: <activity android...java.util.logging.Handler;改为import android.os.Handler;即可。

1.6K30
领券