自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

宋金时的专栏

士不可以不弘毅,任重而道远!你无法改变过去,却可以把握现在和未来,相信自己,无限可能!

原创 Fuse内核死锁导致的Android系统死机问题分析

19.7 案例7:Fuse内核死锁导致的系统死机问题1. 问题现象问题发生的Android系统版本是7.1(Nougat);界面定住,没有任何刷新,所有输入事件无效,包括电源键;watchdog没有重启system_server;问题现场可以连接adb;执行ps命令卡住;2. 初步分析对于死机问题,我们需要做一些分析前的准备工作:(1)拿到问题现场,及时充电以保证问题...

2019-03-14 17:24:05 1574 1

原创 FastJNI导致的Android系统死机问题分析

1. 问题现象问题发生的Android系统版本是7.0(Nougat);滑动屏幕和按键都无响应,屏幕内容没有任何刷新;watchdog没有重启system_server;问题现场可以连接adb;2. 初步分析对于死机问题,我们需要做一些分析前的准备工作:(1)拿到问题现场,及时充电以保证问题现场不被破坏;(2)如果没有现场可以忽略这一步,通过kill -3 后面...

2019-03-14 17:20:54 1714 1

原创 由Debuggerd导致的Android系统死机问题分析

1. 问题现象问题发生的Android系统版本是7.0(Nougat);屏幕没有任何刷新,输入事件无任何响应,即我们平时说的死机(冻屏);watchdog没有重启system_server;问题现场可以连接adb;2. 初步分析死机问题分析前的准备工作:(1)拿到问题现场,及时充电以保证问题现场不被破坏;(2)如果没有现场可以忽略这一步,通过kill -3 后面...

2019-03-14 17:19:12 1393

原创 聊一聊binder driver导致的系统重启问题

问题现象这个问题最早是由接电话重启的现象暴露出来的,当时看到异常信息是Native crash,栈如下:Build fingerprint: 'Xiaomi/scorpio/scorpio:6.0.1/MXB48T/6.10.8:user/release-keys'Revision: '0'ABI: 'arm64'pid: 1383, tid: 1400, name: Binder_1 >>>

2016-12-28 11:21:41 5043 2

原创 由Monkey测试引发的跨多个进程的Android系统死锁问题分析

一、问题现象1、界面定住,没有任何刷新,所有输入事件无效,包括power key2、adb shell可以连接并操作手机3、手机的data和sdcard存储空间已满4、watchdog没有重启system server二、解决方案通过初步分析、深入分析(具体分析过程和关键代码及log在下面)我们知道了问题的原因:1、monkey测试的过程中起了bugreport,并将bugreport输出到stdo

2016-10-14 15:49:32 5412

原创 由Asset中的double free引发的Android系统及APP崩溃问题分析

前言这个问题在来小米之前就遇到并解决过,当时的解决方案与朴老师的初步解决方案一样,本文在之前的初步分析结果之上进一步进行了深入分析,最终得出了当前看起来相对合理并符合原来架构设计的最终方案。 文中引用了朴老师抓的backtrace,同时在进一步分析的过程中朴老师也提出的大量有建设性的问题,感谢朴老师!一、问题现象1、systemui高频崩溃2、system server崩溃导致重启二、解决方案通过

2016-10-14 15:33:45 5449 4

原创 GDB在线调试Android Framework Native C/C++代码

一、准备工作1、下载并编译Android系统源码这里比较灵活,可以下载公司内部机型的代码,也可以下载原生AOSP的代码环境配置参考 https://source.android.com/source/initializing.html源码下载参考 https://source.android.com/source/downloading.html编译运行参考 https://sour

2016-11-03 13:28:52 4403 1

原创 Android Studio在线调试Android Framework Java代码

一、准备工作1、下载最新的Android Studio版本 https://developer.android.com/studio/index.html当前最新的大版本是2.2 2、下载Android系统源码这里比较灵活,可以下载公司内部机型的代码,也可以下载原生AOSP的代码环境配置参考 https://source.android.com/source/initializing.h

2016-11-03 13:17:05 7435 3

原创 由Ctrl+Z引发的系统卡死重启问题分析

起因JT同学拿着手机来找我说用着用着自动重启了,让我看一下,我抓出bugreport一看是system server发生watchdog重启了,然后接着看了一下traces,发现traces比较诡异。初步分析为什么说traces诡异?暂且一看都被thread 31持有的锁给block了,那就看看thread 31在搞什么飞机?"InputDispatcher" prio=10 tid=31 Nati

2016-10-14 15:22:04 3913 1

原创 由ContactsProvider的升级引发的OTA首次开机卡白米问题分析

上午的宁静被一个OTA卡白米问题打破,接下来不断有人反馈不同机型都复现了OTA后卡白米,10.9号OTA升级到10.10号的版本,全机型问题,线刷没有问题,好吧,接下来就根据这些信息开始初步分析log吧!初步分析查看问题log,发现Boot phase到了PHASE_SYSTEM_SERVICES_READY 并且走到了PackageManagerService.systemReady10-1

2016-10-14 15:11:18 2114

原创 Android4.4.2KK竖屏强制更改为横屏的初步简略方案

解决方案:当前是根据当前问题场景即竖屏强制更改为横屏的需求而做的改动,基本是hardcode定义的状态,总共修改有效代码行数5行,如果后续有其他需求或者需要更灵活的配置横屏和竖屏,可以采用编译开关生成系统属性的方式来控制,在系统中通过属性来判断当前的屏幕状态以达到灵活目的,可以在本次修改的基础上增加条件判断达到目的,具体修改代码如下图中圈红标识。一、Android Framework Java层的

2016-01-26 11:52:49 4402 3

原创 Mac OS下terminal的快捷键

时隔2年又开始使用Mac OS系统,之前的很多快捷键和常用的命令都忘记了,使用起来确实不方便,效率也低,特别是terminal下,所以对于terminal又找了一下并整理如下,希望对后来的同学也有用:control + a 将光标移到行首control + e 将光标移到行尾control + l 清空屏幕,与clean命令效果相同control + u 清除当前行control + k 清除至当

2015-08-26 22:33:39 3453 2

原创 温故知新,基础复习(二叉堆排序)

温故知新,基础复习(二叉堆排序)最小堆(最终数组的数据是降序),最大堆(最终数组的数据是升序)下例是最小堆#include #include void Swap(int Arra[],unsigned int LeftIndex,unsigned int RightIndex){ int TeampValue = Arra[LeftIndex]; Arra[LeftIndex]=Arr

2015-07-21 23:01:02 2059 1

原创 温故知新,基础复习(快速排序及优化)

温故知新,基础复习(快速排序及优化)使用了三值取中和插排优化#include#define InsertSortNumber 10void InsertSort(int Arra[],unsigned int LowIndex,unsigned int HighIndex){ printf("low=%d,high=%d\n",LowIndex,HighIndex); for (un

2015-07-21 22:19:19 2016

原创 温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个sum值,求出数列中所有满足和为sum的数对)#include#includevoid PrintSumNumbers(int Arra[],int ASize,int Sum){ //O(1) if (ASize<2) { printf("The size of the Arra is invalid.\n");

2015-07-21 22:15:03 2049

原创 大数据处理时的一种BitMap小算法

一种大数据外部排序(内存无法加载所有排序元素)、去除重复元素、快速找到随机被删除元素的BitMap小算法,核心思想即通过将一个数作为下标(index)来索引一个bit表示一个数是否存在,排序时的时间复杂度为O(N),需要的额外空间的复杂度O(N/8),支持整个int范围(正负数都支持)的算法示例如下:char BitMask[] = {0x80 , 0x40 , 0x20 , 0x10 , 0x8

2015-07-21 22:02:46 6859

原创 Android5.0L下因sensorservice crash导致systemserver重启的另外一种场景分析

一、出问题的场景1、Sensorservice线程正在处理compass sensor事件的过程中,检查了一次buffer的指针的有效性,并在稍后会传递到AKM获取数据的函数接口中使用2、Sensorservice线程所在进程的负责跨进程通信的Binder线程在sensorservice线程检查buffer指针之后没有真正使用之前,收到了disable compass sensor的请求,从log

2015-07-03 16:13:55 3423

原创 Android5.0L中SensorService crash导致的systemserver重启问题分析

一、初步分析结论sensorservice多线程机制存在问题,导致在disable accel sensor并释放相应内存和数据之后,有很小的概率发生继续读取到未处理完的sensor事件,从而继续使用相应的内存和数据,并且没有做相应的防御保护措施,最终引起指针地址操作错误。二、解决方案1、首先在可能发生错误的地方做好防御保护措施2、对多线程进行同步,对于临界变量的操作都放置到临界区中,使用锁来保护

2015-07-03 15:48:40 4235

原创 Android4.4KK下遮盖p-sensor拨打电话无法自动灭屏的问题分析

一、问题现象先遮盖P-Sensor,然后拨打电话,90%的情况下屏幕无法自动关闭背光显示。关闭Settings-》Display-》Brightness-》Auto,然后再执行以上操作则100%能够正常关闭背光显示。Platform:MT6732Android版本:4.4KKBuildType:user系统软件版本:SWA1H+UM系统RAM:1GB参考机行为:参考机1正常,参考机2正常二、MTK

2015-07-03 11:44:48 5759 9

原创 AndroidKK4.4 Power key电量屏幕时button light先亮LCD后亮的卡顿问题分析

一、问题现象按下Power key点亮屏幕时,很大概率出现先亮button light,然后再亮屏的现象,明显感觉到卡顿。线索1、快速按下Power key熄灭和唤醒基本不会出现以上问题现象线索2、长按Power key会同时亮LCD和button light线索3、插入2G sdcard基本没有出现过以上问题,换成32G的class 10的sdcard之后就很大概率出现以上问题Platform:

2015-07-03 10:31:17 4002

原创 Android5.0L退出APP横竖屏切换导致的触摸屏输入(Touch Event)无效(冻屏)问题分析(Key Event仍然有效)

一、问题现象1、多次进出需要强制横屏的app,比如Real FootBall2015,在退出app的时候会有概率出现退出卡顿,然后TP无法输入的问题。2、出问题时Power key有响应。3、此问题同时在Driver only上有复现。Platform:MSM8916Android版本:5.0.2LBuildType:user系统软件版本:vA6P+L5P0系统RAM:1GB参考机行为:1、ALT

2015-07-02 20:56:25 5463 7

原创 Android5.0L因SystemUI ANR导致的黑屏问题分析

一、问题现象1、用户直观看到的现象是黑屏。2、出问题时StatusBar、NavigationBar和墙纸消失。3、大部分发生在FOTA重启之后,出现概率很低。Platform:MSM8916Android版本:5.0.2LBuildType:user系统软件版本:VA6V+L5V0系统RAM:1GB参考机行为:1、5.0L的Nexus4和5.1L的Nexus5都没有重现此问题。二、解决方案通过初

2015-07-02 20:29:08 7781 9

原创 Android System ANR caused SWT restart issue

一、问题现象1、用户直观看到的现象是System先ANR。2、ANR之后系统重启。测试方法:在录音的界面不停的滑动音量进度条,同时座机给测试机打电话,电话没有接通,只见界面冻结,弹出ANR,接着系统重启。Platform:MT6732Android版本:4.4.4KKBuildType:user系统软件版本:SWA3A+UMA0系统RAM:1GB问题概率:≈2%参考机行为:1、低概率问题,暂无参考

2015-06-30 11:44:14 4160 1

原创 Android Stability test occured SWT restart issue

一、问题现象1、System先ANR。2、ANR之后系统重启。测试方法:Stability test。Platform:MT6732Android版本:4.4.4KKBuildType:user系统软件版本:D17+ZX系统RAM:1GB问题概率:暂未统计,截止到目前仅此1次参考机行为:1、低概率问题,暂无参考机行为。二、解决方案通过初步分析、深入分析(具体分析过程、关键代码和log在下面会附上)

2015-06-29 18:36:46 2944 3

原创 Firefox OS简介

Firefox OS简介

2015-06-25 16:50:27 1683

原创 Android中网络流量控制(防火墙)——Iptables

Iptables简介iptables是与最新的 2.6.x 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。

2015-06-25 13:44:32 5207

原创 Android中Activity与Task相关的属性解析

与Task相关的属性解析Activity和TaskAffinity和新Task

2015-06-25 11:32:39 2300 1

原创 Android中各种颜色在dawable.xml中的定义

Android中各种颜色在dawable.xml中的定义

2015-06-25 11:18:16 2024

原创 Android数据的存储方式简介

作为一个完整的应用程序,数据存储操作是必不可少的。因此,Android系统一共提供了四种数据存储方式。分别是:SharePreference、SQLite、Content Provider和File。由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider。

2015-06-25 11:09:29 1654

原创 Android获取Activity(应用)的运行状态及其他信息

Android获取Activity(应用)的运行状态及其他信息检测某Activity是否在当前Task的栈顶判断Android应用是否在前台获取Android手机内安装的所有桌面Android 判断程序前后台状态

2015-06-25 11:01:44 11650 2

翻译 Android Application Fundamentals——Android应用程序基础知识

Application Fundamentals——应用程序基础知识Key classes——关键类ActivityServiceBroadcastReceiverContentProviderIntentIn this document——在这篇文章中Application Components——应用程序组件Activating components: intents——激活组件:意图Shut

2015-06-25 10:48:26 3174

原创 Android字体Font相关知识

Android字体Font相关知识

2015-06-25 10:30:51 6363 1

原创 由Android的fastboot no permissions而引出的Linux特殊权限管理之:SUID、SGID、SBIT

由Android的fastboot no permissions而引出的Linux特殊权限管理之:SUID、SGID、SBIT

2015-06-22 15:56:26 3007 4

原创 TCL通讯上海产品创新中心职位推荐

TCL通讯上海产品创新中心职位推荐对于以下岗位如有感兴趣的同学请将简历发送至vincent.song@tcl.com,我们的HR将会及时与您取得联系!以下是紧急招聘职位信息:

2015-06-08 17:38:52 3922 10

原创 Android ART runtime简述

文章目录:一、ART runtime简述二、ART无缝替换Dalvik原理简述三、ART执行本地机器指令过程简述

2015-06-05 19:58:58 1750

原创 Error:Execution failed for task ':app:compileDebugAidl'. > aidl is missing(Android Studio编译错误)

今天下载了一个1.2.1.1版本的Android Studio,使用VPN更新好SDK之后就新建了一个hello world工程测试一下环境,然后就出现以下错误:Error:Execution failed for task ':app:compileDebugAidl'. > aidl is missing

2015-06-03 22:24:10 104096 14

原创 Android Dalvik虚拟机简述(与Java虚拟机的区别和简要的执行原理)

文章目录:一、虚拟机简述二、Java虚拟机简述三、Dalvik虚拟机简述四、Dalvik虚拟机与Java虚拟机的区别五、Dalvik虚拟机执行原理简述

2015-06-03 19:39:44 3406

原创 获取Android系统memory的使用情况的脚本

mkdir memoryUsageadb shell dumpsys meminfo > memoryUsage/dumpsys_meminfo.txt adb shell cat /sys/kernel/debug/ion/ion_mm_heap > memoryUsage/ion_mm_heap.txt adb shell cat /proc/mali/memory_usage > me

2015-06-01 17:35:25 2540

转载 Android系统机制、框架、架构剖析(Android Anatomy and Physiology)

•Android Anatomy•Linux Kernel•Native Libraries•Android Runtime•Native Libraries•Android Runtime•Application Framework•Android Physiology•Start-up Walkthrough•Layer Interaction强烈推荐的Android系统机制、框架、架构剖析文

2015-06-01 17:18:20 1877

原创 Android中InCallUI显示太慢问题分析

完整分析流程和详细内容也可以下载PDF文档:InCallUI_issue_analysis_report一、问题现象当手机有来电时,先听到铃声,过了比较长的一段时间(3-4s)屏幕才点亮并显示来电界面。Platform:MT6581Android版本:4.4KKBuildType:userdebug系统软件版本:SWC1E+UP系统RAM:512M二、Android4.4来电及IncallUI显示

2015-06-01 17:00:35 9460 3

提示
确定要删除当前文章?
取消 删除