关闭

[置顶] 聊一聊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 >>>...
阅读(1178) 评论(2)

[置顶] 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...
阅读(2325) 评论(1)

[置顶] 由Monkey测试引发的跨多个进程的Android系统死锁问题分析

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

[置顶] 由Asset中的double free引发的Android系统及APP崩溃问题分析

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

[置顶] 小米(MIUI)系统适配组招聘职位

1. 前端开发工程师 会html,css等技术 2. 服务器开发工程师 Java,Php等 3. 自动化测试工程师 Python脚本,Linux Shell等 4. Android 系统工程师 会Framework,Linux,性能优化,内存管理,CPU调度之一即可...
阅读(1745) 评论(0)

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...
阅读(1309) 评论(1)

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

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

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

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

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

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

Mac OS下terminal的快捷键

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

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

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

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

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

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

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

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

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

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

一、出问题的场景1、Sensorservice线程正在处理compass sensor事件的过程中,检查了一次buffer的指针的有效性,并在稍后会传递到AKM获取数据的函数接口中使用2、Sensorservice线程所在进程的负责跨进程通信的Binder线程在sensorservice线程检查buffer指针之后没有真正使用之前,收到了disable compass sensor的请求,从log...
阅读(2322) 评论(0)
274条 共19页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1434303次
    • 积分:14553
    • 等级:
    • 排名:第844名
    • 原创:269篇
    • 转载:1篇
    • 译文:4篇
    • 评论:502条
    博客公告
    欢迎大家交流学习!
    eMail:songjinshilove@163.com
    QQ:809800300
    博客专栏
    最新评论