解决常见的Android问题

常见问题:

1、查杀:

查杀一般分为两个方向一种是内存不足的查杀,一种的是因为温度限频查杀,统称为内存查杀,两个问题的分析思路不同

1、内存不足查杀:

主要是因为当用户出现后台运行多个APP或者是相机等消耗内存较大的进程的时候就会出现应用查杀情况

2、温度限频查杀:

温度限频查杀主要是根据查杀的内存占比和被杀时出现的log日志来决策的

总结:

两种不同的查杀应该座位不同的处理方式前期思路是一样的,后期分析不同

前期思路:

1、查杀应用

2、查杀时间

3、查杀的关键字

4、为什么被查杀

5、内存紧张查杀&温度查杀

2、ANR:

ANR一般常见的问题都是因为主线程持锁阻塞问题导致的,或者是网络问题导致出现的ANR问题或者是IO占比过高导致出现的ANR问题:

主线程持锁问题就需要从ANR日志里查看是什么问题在进行处理

查杀:

1、什么事查杀问题:

查杀主要是根据用户的启动模式来判断,测试会根据启动一个应用后,把应用退出后台,然后启动其他应用,然后再次打开首次应用,如果首次应用是冷启动,就可以判断为被杀了

1.1、如何看查杀:

log个问题的存放地

一般打开从jira上下载下来的log基本上都差不多,但是主要的log还是要在bugreport里面

解压后会出现主要查看的是这两个文件

bugreport这个文件是手机log,从这里可以看到用户操作手机的时间节点

dumpstate_board这个文件里面是手机的壳温度

开始查看bugreport文件

DUMP OF SERVICE CRITICAL cpuinfo:

这个标题主要是看总体CPU占比的

从截图上可以看到占比system_server占比CPU过高

下面开始查看查杀关键字

1. am_proc_died:进程被杀死的时间

有进程被杀时间点及原因包名,则直接搜索

am_proc_died: [0,[0-9]*,xxxx,,xxxx//代表包名----这是个样式模版

例子:

03-25 16:14:01.357 1000 2215 6034 I am_proc_died: [0,31528,com.tencent.mobileqq,702,10]

解释:

这条日志信息来自 Android 操作系统,指示一个名为 "com.tencent.mobileqq" 的进程 ID 为 31528 的进程已经终止。消息开头的 "I" 代表 "Info",表示这是一条信息性消息。消息还包括检测到该进程死亡的进程 ID(1000),父进程 ID(2215)和线程 ID(6034)。消息末尾的数字 "702" 和 "10" 是额外的信息,它们的含义如下: - 702:该进程的退出码。在 Unix 系统中,进程退出时会返回一个整数值,称为退出码。退出码通常用于指示进程的退出状态,例如是否成功完成任务等等。在这种情况下,退出码为 702,但具体含义需要查看该进程的文档或代码才能确定。 - 10:该进程的进程组 ID。在 Unix 系统中,每个进程都属于一个进程组,进程组 ID 用于标识该进程所属的进程组。在这种情况下,进程组 ID 为 10。

2.然后再查找一下进程的开始时间:

am_proc_start:[0,[0-9]*,xxxx,,xxxx//代表包名----这是个样式模版

03-25 16:14:01.357 1000 2215 6034 I am_proc_start: [0,31528,com.tencent.mobileqq,702,10]

解释:

开始的解释和结束的解释基本都差不多只是开头不同一样

03-25 16:14:00.945 1000 2215 4559 I am_kill : [0,3469,com.milink.service:core,935,camera boost,114948] 03-25 16:14:00.959 1000 2215 4559 I am_kill : [0,405,com.tencent.mobileqq:privileged_process0,905,camera boost,214012] 03-25 16:14:00.980 1000 2215 6038 I am_proc_died: [0,3469,com.milink.service:core,935,19] 03-25 16:14:00.987 1000 2215 4559 I am_kill : [0,32522,com.tencent.mobileqq:tool,905,camera boost,353896] 03-25 16:14:00.996 1000 2215 4559 I am_kill : [0,31528,com.tencent.mobileqq,702,camera boost,456120]

解释:

根据您提供的日志信息,可以看出应用程序 com.tencent.mobileqq 及其相关进程被标记为 "camera boost" 并被终止了。这种终止可能是由系统的内存管理策略触发的,系统可能认为这些进程正在消耗过多的系统资源,特别是与相机相关的资源,因此将它们终止以释放内存和其他系统资源。

从被查杀的地方开始查找一些信息从而就能知道为什么被查杀

总结:

一般应用被查杀主要原因都会提现到被查杀的时候,查杀的思路就是看进程是因为什么被杀的

开始查看dumpstate_board文件

一般来看这种文件主要是因为查杀的时候显示因为高温限频被查杀,或者是页面出现卡顿也有可能是高温导致的所以一把情况这个时候都是需要让热或者是功耗帮忙看一下是否正常或者是否能修复

用上面这张图片举例子

如何查看是不会因为高温导致的卡顿就需要看壳温和限频

VIRTUAL-SENSOR(壳的温度) 24977(24°)

lmh_cpu7(CPU限频,手机CPU0-7) 0(限频的大小)

总结:

如果是因为手机高温限频锁导致的查杀或者是卡顿问题,这个时候就需要找热或者是功耗人员看一下是什么情况是否正常了,

ANR分析方案

如果是ANR问题我们就需要从ANR日志中获取原因

ANR日志一把都会存放在:

data

anr

对照的ANR出现的时间进行查看是什么问题

分析ANR持锁的问题:

查看ANR问题主要看是不是有lock <0x04da9bd0>这样的关键字,如果有就看一下后面的id 这个截图的id是83 那我们就去下面找一下id=83的进程

从下面的log可以看出主要的原因是因为闹钟导致的主线程阻塞出现的ANR问题这个时候就需要请相关的业务人员帮忙看一下,为什么阻塞了

这张图片主要是因为应用无响应导致出现的ANR问题

在这个日志中,有几个关键字可以指示是因为应用无响应导致的ANR:

  1. "ANR in" 或 "Application Not Responding":通常出现在日志开头,表示应用无响应。

  2. "Blocked" 或 "BlockedReason":表明线程被阻塞,无法继续执行。

  3. "Native":表示线程处于本地代码(Native)执行的状态,可能是因为执行了耗时的本地操作导致的阻塞。

  4. "main" 或 "主线程":表示主线程被阻塞,主线程的阻塞是导致应用无响应的主要原因之一。

  5. "Cmd line":显示应用的命令行,有助于确定是哪个应用发生了ANR。

  6. "DALVIK THREADS" 或 "ART THREADS":显示了当前进程中的线程信息,可以检查是否有线程长时间被阻塞。

在这个日志中,可以看到主线程("main")被阻塞,而且是在执行应用的代码("com.fy.zdxs.mi")时发生的,这些都是指示应用无响应的关键字。

出现的常见GC问题

最近出现抖音内存泄漏长时间GC导致出现的卡顿问题,从log上如何查看是因为GC问题导致的抖音出现的卡顿或者是ANR问题

从上面的截图可以看到进程后有个GC 大写的 这个明显是抖音内存泄漏导致的问题像类似的问题需要找系统稳定性,三方兼容帮忙看一下

思路:

查看是不是GC问题,需要查看时间和进程名称,然后看一下GC数量在确定是不是GC问题,还有要看看是不是GC回收时间较长倒是出现的ANR问题

每个GC回收都会有相关的回收内存的大小和回收的时间,可以根据时间的长短来进行查看,是不是GC时间过长

查看每个进程占比内存的大小

am_pss----每个进程在不同的时间节点出现的内存占比

[PID, UID, 进程名称, PSS总内存, 分配总内存, 分配内存, Native Heap, Dalvik Heap, 其他, PSS的次数, 最后 PSS 的次数]

am_pss : [24149,10156,com.google.android.googlequicksearchbox:search,69756928,48447488,14669824,128151552,0,3,12]

参考文档:

1、学习文章

https://www.jacpy.com/2017/04/24/android-anr-thread-lock-analysis.html

2、学习文章:

https://segmentfault.com/a/1190000040142277

NAR教学:

https://www.cnblogs.com/huansky/p/13944132.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/10481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VO,PO,DTO

DTO&#xff08;Data Transfer Object&#xff09;数据传输对象 前后端之间的传输时使用 比如前端登录请求的请求参数有username&#xff0c;password&#xff0c;但后端pojo类user有username&#xff0c;password&#xff0c;birthday&#xff0c;gender时&#xff0c;可以创…

汇昌联信科技:拼多多可以做无货源吗?

在探讨电商平台的经营模式时&#xff0c;"无货源"这一概念经常被提及。它指的是卖家在不需要事先囤积大量商品的情况下&#xff0c;通过与供应商的合作&#xff0c;直接将订单信息传递给他们&#xff0c;由供应商完成发货的过程。针对“拼多多可以做无货源吗?”这一…

从零开始学习MySQL

# 第一步&#xff1a;下载MySQL安装包 访问MySQL官方网站的[下载页面](https://dev.mysql.com/downloads/mysql/)&#xff0c;根据你的操作系统&#xff08;Windows、macOS、Linux等&#xff09;选择合适的MySQL Community Server版本进行下载。对于Windows用户&#xff0c;可以…

内网渗透之如何批量PTH获取主机权限?

—— 利用CrakMapExec工具进行全网段批量PTH CrackMapExec&#xff08;CME&#xff09;是一款后渗透利用工具&#xff0c;可帮助自动化大型活动目录(AD)网络安全评估任务。其缔造者byt3bl33d3r称&#xff0c;该工具的生存概念是&#xff0c;“利用AD内置功能/协议达成其功能&…

【练习2】

1.汽水瓶 ps:注意涉及多个输入&#xff0c;我就说怎么老不对&#xff0c;无语~ #include <cmath> #include <iostream> using namespace std;int main() {int n;int num,flag,kp,temp;while (cin>>n) {flag1;num0;temp0;kpn;while (flag1) {if(kp<2){if(…

2024-AIDD-人工智能药物设计设计思路-Artificial Intelligence for Drug Design

2024-AIDD-人工智能药物设计设计思路-Artificial Intelligence for Drug Design 在药物设计中&#xff0c;特别是针对特定靶点的药物设计&#xff08;AIDD&#xff0c;Artificial Intelligence for Drug Design&#xff09;&#xff0c;您可以遵循以下步骤&#xff1a; 靶点选…

什么股指期货滚IC的意思?

股指期货滚IC是一种投资策略&#xff0c;主要是指投资者在操作中证500股指期货&#xff08;IC&#xff09;时&#xff0c;利用股指期货相对于现货价格的贴水&#xff08;即期货价格低于现货价格&#xff09;来进行套利。 下面股指君将通过几个关键点来详细解释这个概念&#x…

算法学习笔记(博弈论中的SG函数)

定义 S G SG SG函数: 对于状态 x x x和它的所有 k k k个后继状态 y 1 , y 2 , . . . , y k y_1, y_2,...,y_k y1​,y2​,...,yk​&#xff1a; S G ( x ) m e x { S G ( y 1 ) , S G ( y 2 ) , . . . , S G ( y k ) } SG(x) mex\{SG(y_1), SG(y_2), ..., SG(y_k)\} SG(x)mex…

Android中gradle.properties 和 gradle-wrapper.properties 作用

我们更深入地了解这两个文件的作用和它们可以包含的一些常见配置。 gradle.properties gradle.properties文件是一个标准的Java属性文件&#xff0c;它允许你为Gradle构建配置全局属性。这些属性可以在项目的任何地方使用&#xff0c;包括项目的子项目。以下是一些常见的配置…

2024数维杯B题详细思路代码数学建模高质量保姆级

2024年第九届数维杯大学生数学建模挑战赛题目 B 题 生物质和煤共热解问题的研究 &#xff08;1&#xff09;基于附件一&#xff0c;请分析正己烷不溶物(INS)对热解产率&#xff08;主要 考虑焦油产率、水产率、焦渣产率&#xff09;是否产生显著影响&#xff1f;并利用图像 加…

工业机器人应用实践之玻璃涂胶(篇二)

工业机器人 接上篇文章&#xff0c;浅谈一下实践应用&#xff0c;具体以玻璃涂胶为例&#xff1a; 了解工业机器人在玻璃涂胶领域的应用认识工具坐标系的标定方法掌握计时指令的应用掌握人机交互指令的应用掌握等待类指令用法&#xff08;WaitDI、WaitUnitl 等&#xff09;认…

02 Linux编程-文件

1、文件描述符 对于内核而言&#xff0c;所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或者创建一个新文件时&#xff0c;内核向进程返回一个文件描述符。当读写一个文件时&#xff0c;用open和creat返回的文件描述符标识该文件&#xff0c;将…

n5.树(中)

1、二叉树的遍历 1.1先序、中序、后序遍历 先序遍历 根->左->右 先序遍历先访问根节点&#xff0c;再访问它的左子树&#xff0c;然后访问它的右子树。对于每次访问到的结点&#xff0c;都要递归地访问左子树、后右子树———递归。 创建 typedef struct TreeNode*…

点云体积计算方法之一 附python代码

一句话描述思路:通过统计计算点云所占用的体素的数量来计算点云的近似体积。这是一个粗略的近似值,对于复杂的形状可能不准确。 另外需要注意,这个只适合点云密集分布的场景来计算体积,比如树木扫描的体积;如果只是有表面积扫描的点云,该方法就不能计算整个物体的体积了…

飞跨电容型的三电平(FC-NPC)逆变器simulink仿真模型

本人搭建了飞跨电容型的三电平逆变器simulink仿真模型&#xff0c;相较于二极管钳位型三电平逆变器而言&#xff0c;钳位二极管变为飞跨的电容。采用SPWM调制和均流均压控制&#xff0c;通过搭建仿真模型得到三电平波形。 三电平拓扑中的飞跨电容是指在电路的输出端使用电容来实…

书生作业:LMDeploy

自己随便说几句。 关于模型部署&#xff0c;很有趣的一件事就是&#xff0c;它一路随着深度学习训练一起发展&#xff0c;尽管例如tensorrt等工具的出现&#xff0c;不断试图降低部署门槛&#xff0c;但是实际上&#xff0c;每一次AI的升级&#xff0c;似乎让这个细分领域没有…

C++面向对象

面向对象的三大特征 封装 目的:隐藏实现细节,实现模块化。特性: 访问权限 public:对所有对象开放。protected:对子类开放。private:只对自己开放。可以通过友元类打破 private 限定。对属性和方法进行限定。class A {friend class B; // B 可以访问 c public:int a;void …

图片格式不对怎么转换?推荐几个图片转换的高效处理方法

在日常使用电脑或处理图片的过程中&#xff0c;我们经常会遇到图片格式不兼容的问题&#xff0c;例如&#xff0c;我们可能收到了一个无法打开的图片文件&#xff0c;或者想将图片转换为其他格式以便在不同的应用程序中使用&#xff0c;这时候就需要将图片转格式&#xff0c;所…

如何让组织充满活力?你需要做好这七步

组织活力&#xff0c;通俗点说就是&#xff1a; 从竞争对手角度看&#xff0c;组织活力强的组织能做到竞争对手做不到的事情&#xff1b; 从客户角度看&#xff0c;组织活力强的组织&#xff0c;客户感受好&#xff1b; 从员工角度看&#xff0c;组织活力强的组织&#xff0c…

salesforce inactive user 和 deactived user 的区别

在Salesforce中&#xff0c;“inactive user”和“deactivated user”都指的是不再活跃或被停用的用户&#xff0c;但它们在某些情况下可能有不同的含义。 Inactive User&#xff08;非活跃用户&#xff09;&#xff1a;一个用户被标记为“非活跃”时&#xff0c;通常是因为他们…