- 博客(63)
- 资源 (10)
- 收藏
- 关注
原创 Android NE问题分析方法介绍
文章目录简介Native内存布局NE问题常见类型常用调试工具tombstone抓取流程实例分析tombstone文件内容举例简介NE,全称Native Exception,在Android中主要指在用户空间运行的native程序或者natvie库发生异常。NE问题通常带来程序奔溃现象,导致功能模块不稳定。本文主要介绍有关NE的基本知识、NE问题出现后的基本分析方法、常见的NE问题和常用调试工具。Native内存布局这里主要介绍Native进程的虚拟地址空间,分32bit和64bit进程,camer
2020-11-30 10:21:19
4983
原创 NE问题分析方法 ---- Native栈还原和调试技巧
文章目录简介Native栈还原调试技巧简介NE即Native Exception,我们主要指Android C/C++程序出现异常报错,因Camera HAL是由C/C++实现的,在相机系统开发过程中,经常会碰到NE问题。出现NE问题的原因有很多,如空指针、内存踩踏、FDLEAK、数组越界访问等在出现问题时,Kernel会发送一个signal给user space,user space中有个tombstoned进程接收处理信号,在异常进程奔溃前,tombstoned会将该进程的backtrace、mem
2020-11-30 10:14:21
1940
原创 相机启动时间调试指北
简介相机启动速度是ROM开发中性能优化的重要一环,测试人员经常与对比机对比各个场景下的启动速度,我们可以从以下方面关注相机启动时间,跟对比机比较,看项目慢在哪个环节,本文虽基于Qcom CamX架构,基本步骤是相同的:分解相机启动的步骤:从Touch屏幕到CameraManager中准备open camera打开相机创建CaptureSession启动预览分解下面介绍各个步骤,分解统计耗时,性能分析常用的工具是systrace,可以看到具体线程的工作状态,systrace的基本.
2020-06-25 17:13:29
1510
原创 Android6.0 Telephony流程分析——数据连接Enable过程
数据连接有两个操作,打开或者关闭,本文分析的数据连接打开的过程,先附上时序图,此图只是打开数据连接开关的主要过程,仅供参考。step2,PhoneInterfaceManager是ITelephony的服务端。step3,根据SIM卡的情况,选择GSMPhone或者CDMAPhone,这两phone的setDataEnabled都是step4。step5,通知modem
2017-04-07 10:21:48
3556
原创 Android6.0 Framework分析——应用程序APP的安装过程
应用程序的安装是通过包管理服务PackageManagerService完成的,常见的安装方式有以下几种:① 内置APP随着系统启动PMS而安装。② 使用adb install命令安装。③ 通过系统内置的PackageInstaller应用安装。④ 在一些手机厂商内置的应用商店下载,然后静默安装。分析源码之后,会发现,其实只有两种方式,一是系统内置应用通过Packa
2016-08-05 18:00:17
4769
原创 Android5.1 Framework分析----如何在SystemServer中添加系统服务
本文以mtk android5.1为研究对象。Android的系统服务都是托管给ServiceManager管理的,我们可以自定义一个自己的服务,并将其添加到ServiceManager中,本文以添加一个Tts语音服务为例,供应用层调用。1、首先,在frameworks/base/core/java/android/app中新建一个aidl文件 ITtsManager.aidl,内
2016-07-12 17:39:56
6764
3
原创 Android6.0 Telephony流程分析——PhoneApp启动主要类关系分析
本文代码以MTK平台Android 6.0为分析对象,与Google原生AOSP有些许差异,请读者知悉。PhoneApp(包名com.android.phone)主要代码位于packages/services/Telephony/frameworks/opt/telephony/frameworks/base/telephony/com.android.phone进
2016-05-27 12:51:37
3297
原创 Android5.1 Telephony流程分析——拨打电话流程(MO CALL)
本文代码以MTK平台Android 5.1为分析对象,与Google原生AOSP有些许差异,请读者知悉。此图主要是根据Android源代码拨打电话流程来绘制,记录了电话拨打的主要过程:参考博客:http://blog.youkuaiyun.com/yihongyuelan/article/details/45098339
2015-08-29 11:23:22
4475
原创 Android SDK 在线更新镜像服务器资源
大连东软信息学院镜像服务器地址: http://mirrors.neusoft.edu.cn 端口:80北京化工大学镜像服务器地址: IPv4: http://ubuntu.buct.edu.cn/ 端口:80 IPv4: http://ubuntu.buct.cn/ 端口:80 IPv6: http://ubuntu.buct6.edu.c
2015-04-26 22:51:59
1658
原创 Android5.0模拟器无法上网
最近新下载的android5.0.1代码编译出的模拟器无法上网,提示net::ERR_NAME_NOT_RESOLVED。网上找了一下,解决方法很简单:1.启动模拟器2.如下图:adb shell getprop net.dns1 //查看dns的值adb shell setprop net.dns1 192.168.1.1 //设置dns,一般是你路由器的ip(这个i
2015-01-11 15:06:35
4535
原创 Ubuntu14.04安装Moka icon
step1.安装unity-tweak-tool工具,ubuntu的主题管理工具sudo apt-get install unity-tweak-toolstep2.添加ppa源,网上很多帖子介绍的源已经失效了sudo add-apt-repository ppa:moka/stablesudo apt-get updatesudo apt-get install mo
2015-01-11 14:28:02
2553
转载 关于Android手机MTP模式连接的一些设置(win7和ubuntu下,以红米1s为例)
有些手机的MTP模式在电脑上识别不了,需要一些设置才可以,下面就网上收集来的一些设置方法集中贴过来:一、 win7下参考:http://blog.ammrli.com/?p=11171、在设备管理器-便携设备-MTP设备(带黄色感叹号的)点右键,看查看设备的VID和PID,如果是红米1S的话应该就是vid 2717和pid 12682、 打开c:\windows
2015-01-10 21:01:42
4076
原创 Android4.4 应用分析——修改Launcher3应用以适应单屏壁纸
Android4.4的墙纸信息存放在/data/system/users/0/目录下,WallpaperManagerService启动后,会生成如下两个文件在/data/system/users/0/目录下: static final String WALLPAPER = "wallpaper"; //设置的墙纸图片,一般为jpeg格式 static final Strin
2014-12-28 15:26:38
2475
转载 Android Launcher桌面图标显示数字
之前一直以为是应用本身在对图标进行修改,看了源码之后发现其实主要的工作并不是应用自己完成的,主要的工作在是launcher里面完成的.关于系统里面类似未读短信的具体处理流程如下: 原理一个应用要实现这个效果,就要在自己有未读的消息的时候发送一个广播告诉系统我有未处理的事件了(例如:短信,电话和邮件等),同时将相关的信息进行保存,比如应用的名称(这里指的是Comp
2014-12-24 22:23:51
3947
原创 Android4.4 Framework分析——Android默认Home应用Launcher3的加载过程分析
本文主要介绍Android4.4默认Home应用Launcher3的启动过程和Launcher3的数据加载过程。Launcher的启动是开机时,ActivityManagerService准备好后开始的,下图是它的启动序列图:step1,SystemServer中,ActivityManagerService准备好了。step3, boolean resumeTopAct
2014-12-14 22:47:54
2979
原创 Android与设计模式——模板方法(Template Method)模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法模式的结构 模板方法模式是所有模
2014-12-09 18:32:41
1219
原创 Android4.4 Framework分析——Activity窗口的创建过程(一)
学习android的窗口模块一周多了,感觉自己对这个模块的理解还是比较模糊,先把get的知识点记录一下。下图是学习过程记录的activity窗口启动过程序列图,没有或者没办法完整的描绘出来,整个过程比较复杂:整个学习过程中是参照老罗的android之旅博客和《深入理解android内核设计思想》一书来辅助的,非常感谢前辈。Activity的整体启动过程可查看Android4.4
2014-12-04 22:45:30
1610
原创 Android与设计模式——组合(Composite)模式
定义(GoF《设计模式》):将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和使用具有一致性。 涉及角色 1.Component:(View)是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。 2.Leaf:(TextView、自定义View)在组合中表示叶子结点对象,叶子
2014-12-04 19:31:18
1127
原创 Android4.4 Telephony流程分析——联系人(Contact)列表缩略图的加载过程
本文代码以MTK平台Android 4.4.2为分析对象,与Google原生AOSP有些许差异,请读者知悉。Android联系人列表的缩略图加载主要用到ContactPhotoManager.java这个类,这是个抽象类,实现了ComponentCallbacks2接口,其内部有个它的具体实现类,叫ContactPhotoManagerImpl,ContactPhotoManagerI
2014-12-03 20:33:00
4493
原创 Android4.4 Telephony流程分析——拨号应用(Dialer)的通话记录加载过程
本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉。Android系统通话记录存储在联系人数据库contacts2.db中的calls表中,通话记录(calllog)存储到数据库的时机可查看我之前的一篇博客Android4.4 Telephony流程分析——电话挂断step39,系统提供了CallLogProvider这个Cont
2014-12-01 18:51:48
3845
原创 Android与设计模式——装饰者(Decorator)模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加
2014-11-28 19:04:49
2506
原创 第九届北京高中数学知识应用竞赛初赛——猫抓老鼠问题
第九届北京高中数学知识应用竞赛初赛第二题原题:一只老鼠为了躲避猫的追捕,跳入了半径为R的圆形湖中.猫不会游泳,只能沿湖岸追击,并且总是试图使自己离老鼠最近(即猫总是试图使自己在老鼠离岸最近的点上)。设猫在陆地上的最大速度是老鼠在湖中游泳的速度的4倍。问老鼠能否摆脱猫的追击?(如果老鼠上岸时猫不在老鼠上岸的位置,则认为老鼠摆脱了猫的追击.)解答:如图,设鼠从A点跳入水中,开始一直往圆心O
2014-11-24 09:50:14
2425
原创 Android4.4 Framework分析——ActivityManagerService的启动和对Activity的管理
本文主要介绍android4.4中ActivityManagerService的启动和ActivityManagerService对Activity堆栈的管理。一、ActivityManagerService的启动ActivityManagerService也是在SystemServer启动的时候创建的,class ServerThread { ....... pub
2014-11-23 17:25:59
4134
原创 Android4.4 Framework分析——PackageManangerService的启动过程
参考:PackageManagerService启动及初始化流程
2014-11-21 22:20:39
1386
原创 Android与设计模式——状态(State)模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。 状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式的结构 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每
2014-11-19 18:41:53
2340
原创 Android4.4 Framework分析——Zygote进程的启动过程
Android启动过程中的第一个进程init,在启动过程中会启动两个关键的系统服务进程ServiceManager和Zygote。本文要介绍的就是Zygote进程的启动,Zygote俗称孵化器,专门用于生产(启动)新的进程。Zygote是在Init.rc(aosp/system/core/rootdir)里描述并由init进程启动的。相关代码如下: service zygote
2014-11-17 23:08:09
1416
转载 短信PDU编码解析
短信PDU编码解析一 概述 问题:接收飞信或者配合终端发送的长短信(两三百个字)或者接收运营商发送的话费信息,长短信总是接收不完整。其中会有某些段有丢失。原因分析:1 手机接收到了,但是拼接错误 这样的结果是多条接收不完整的信息,基本上是可以排除的2 网络发送了,手机信号问题或者繁忙,碰巧处理不过来 网络端会
2014-11-17 15:46:03
1925
原创 Android4.4 Telephony流程分析——GsmServiceStateTracker管理网络服务状态
本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉。本文主要介绍GsmServiceStateTracker是怎么管理网络的?手机开机后,怎么去注册网络?网络状态是怎么变换传递的。 Android在ServiceState.java中定义了四种ServiceState状态和16中无线通信网络类型:public class Se
2014-11-15 11:57:46
6991
原创 Android4.4 Framework分析——getContentResolver启动ContentProvider的过程
ContentProvider的创建一般是在第一次使用的时候。没时间分析,可参考老罗的分析 http://blog.youkuaiyun.com/luoshengyang/article/details/6963418
2014-11-15 00:23:24
1916
原创 Android4.4 Telephony流程分析——SIM卡开机时的数据加载
本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉。 本文主要介绍sim卡数据的读取过程,当射频状态处于准备状态时,此时UiccCardApplication应处于AppState.APPSTATE_READY状态,我们沿着这个信号跟踪下去。阅读本文时可先阅读Android4.4 Telephony流程分析——SIM卡开机时的
2014-11-14 18:04:03
5617
原创 Android与设计模式——代理(Proxy)模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述代理(Proxy)模式的: 代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的结构。 所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式类图如下
2014-11-13 19:48:41
2589
原创 Android4.4 Framework分析——广播的注册(BroadcastReceiver)和发送(sendbroadcast)过程分析
在Android应用程序框架中,Activity和Service类都继承了ContextWrapper类,因此,我们可以在Activity或者Service的子类中调用registerReceiver函数来注册广播接收器。下图是在activity中注册广播的过程:step1~step3,就是一般的调用过程。step4,registerReceiverInternal()
2014-11-11 23:16:07
2833
原创 Android与设计模式——单例(Singleton)模式
概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话
2014-11-11 19:49:52
1686
原创 Android4.4 Telephony流程分析——SIM卡开机时的初始化
本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉。本文主要介绍MTK Android开机时,SIM卡的Framework部分初始化过程。先看一段注释: /* Once created UiccController registers with RIL for "on" and "unsol_sim_status_change
2014-11-11 17:32:34
10344
原创 Android4.4 Framework分析——startService的创建过程
本文主要是简要分析一下startservice的启动源码,给出了service的大概启动过程。
2014-11-08 20:10:01
2466
原创 Android与设计模式——观察者(Observer)模式
Android Telephony源码中用到了大量的观察者模式,理解观察者模式,有助于我们阅读源码。
2014-11-08 11:15:54
2084
原创 Android4.4 Telephony流程分析——彩信(MMS)发送过程
本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉。本文贴出的是彩信发送成功的序列图
2014-11-07 18:01:01
1837
原创 Android4.4 Telephony流程分析——短信(SMS)接收过程
本文主要给出了framework接收到信息sms并传输给系统Mms应用的整个过程。
2014-11-06 11:59:08
2677
原创 Android4.4 Telephony流程分析——短信(SMS)发送过程
本文主要给出了android系统短信应用Mms发送短信到framework及framework发送到RILD的过程。
2014-11-04 18:24:47
1504
原创 Android4.4 Framework分析——Launcher中启动应用程序(startActivity)的过程
Launcher启动应用程序的整个过程中,
2014-11-02 21:48:16
2853
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人