Skip to main content

Android 进程退出分析

接口限制

Android 11(API 30)及以上级别的Android版本中新增了进程退出原因接口,可以获取最近以来指定进程的退出原因。进程退出分析通过读取android.app.ApplicationExitInfo来获取应用的退出信息,并上报服务器。

Android系统接口:

getHistoricalProcessExitReasons(String packageName, Int pid, Int maxNum)
接口限制
  1. Android 11 (API 30)及以上级别的Android版本。
  2. 异常原因为REASON_ANR时,会采集ANR Trace信息。
  3. 异常原因为REASON_CRASH_NATIVE时,并且是Android 12及以上版本,会采集tombstone信息。

退出原因

ApplicationExitInfo类中包含的进程退出原因字段,Bugly专业版将其中部分原因归为异常退出。

类型字段名字段含义是否归入异常退出
int6REASON_ANR程序因ANR终止
int4REASON_CRASH程序因Java代码中异常终止
int5REASON_CRASH_NATIVE程序因native代码崩溃终止
int12REASON_DEPENDENCY_DIED程序被杀死因为依赖丢失
int9REASON_EXCESSIVE_RESOURCE_USAGE程序因资源使用过多被杀死
int1REASON_EXIT_SELF程序正常自行退出
int14REASON_FREEZER程序被App Freezer杀死
int7REASON_INITIALIZATION_FAILURE程序因初始化失败被杀死
int3REASON_LOW_MEMORY程序因低内存被杀死是(仅前台)
int13REASON_OTHER程序因其他各种原因被系统杀死,这些原因不是程序问题,如系统刚完成更新
int8REASON_PERMISSION_CHANGE程序因运行时权限更改被终止
int2REASON_SIGNALED程序因操作系统信号终止,如SIGKILL否(上报,但不统计)
int0REASON_UNKNOWN程序因不明原因退出
int10REASON_USER_REQUESTED程序被用户请求终止,如“强制退出“
int11REASON_USER_STOPPED程序在多用户设备上被终止

配置开启

你只需要在设置/SDK配置中,调整进程退出原因的配置参数,即可开启该功能。

  • sample_ratio,设备采样率,表示允许多少比例的设备开启相关监控项。
  • exit_file_ratio,REASON_ANR包含ANR trace信息,REASON_CRASH_NATIVE在android 12的系统中,包含tombstone信息。用户可以自行设置相关采样率,以控制这些信息的采集情况。

进程退出分析

重要提醒
  1. 进程退出原因默认是关闭,需要通过调整配置开启。用户可以控制用户采样率,以及退出现场信息的采样率。
  2. 用户采样率是针对所有的用户而言,包括Android 11以下的用户。Android 11以下的用户,即使收到允许开启的配置,由于接口不支持,也无法真正开启该监控功能。
  3. 发生REASON_CRASH_NATIVE时,只有Android 12及其以上的系统,允许采集tombstone的信息。
  4. 当前通过读取系统接口的方式来获取数据,原则上没有稳定性风险,但是由于功能还在灰度验证中,请谨慎使用。

进程退出分析