宋金时的专栏

士不可以不弘毅,任重而道远!你无法改变过去,却可以把握现在和未来,相信自己,无限可能!
269
原创
1
转载
4
译文
497
评论
1364945
访问

我的博客文章

2016十二
28

聊一聊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 >>>

(851)(2)
2016十一
03

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

(1866)(0)
2016
14

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

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

(1798)(0)
2016
14

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

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

(1379)(2)
2016
05

小米(MIUI)系统适配组招聘职位

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

(1500)(0)
2016十一
03

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

(988)(1)
2016
14

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

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

(1265)(0)
2016
14

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

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

(750)(0)
2016
26

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

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

(2467)(3)
2015
26

Mac OS下terminal的快捷键

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

(1748)(2)
2015
21

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

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

(1299)(1)
2015
21

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

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

(1313)(0)
2015
21

温故知新,基础复习(一个有序从大到小不重复的数列,任意给出一个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");

(1295)(0)
2015
21

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

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

(4172)(0)
2015
03

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

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

(2155)(0)
274条 共19页1 2 3 4 5 ... 下一页 尾页
img

songjinshi

等级:

排名:第833名

博客公告
    欢迎大家交流学习!
    eMail:songjinshilove@163.com
    QQ:809800300
博客专栏
文章分类
文章存档
阅读排行
评论排行
最新评论
img