
Android 系统
颇锐克
Graphics, GPU, device driver,Android Framwork
展开
-
property_get/property_set
每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。 在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:device/system/init。“init”守护进程将启动一个属**。 属**转载 2015-11-05 09:10:26 · 958 阅读 · 0 评论 -
git 在patch中的使用
git 生成patch和使用patch分类: git和linux技巧 2013-03-21 23:46 16452人阅读 评论(4)收藏 举报git获取补丁git format-patchgit补丁用法git获取差异 啰嗦下:发现自己的blog被转载了,不过没有注明出处,有点痛并快乐着的感觉。这里正式申明下:转载请注明出处,感谢。如有商用目的请转载 2015-10-20 20:46:09 · 532 阅读 · 0 评论 -
Android内核学习笔记
0、android系统启动《Android系统启动流程 -- bootloader》《The Android boot process from power on》《Android 启动过程介绍》《Android培训班(86)内核运行之前的引导程序》 这是一系列文章《Android 分区挂载》1、init《深入理解android 卷1》 第3章 深入理解in转载 2015-11-11 22:06:47 · 633 阅读 · 0 评论 -
Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
Android系统的运行时库层代码是用C++来编写的,用C++来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统崩溃。不过系统为我们提供了智能指针,避免出现上述问题,本文将系统地分析Android系统智能指针(轻量级指针、强指针和弱指针)的实现原理。 在使用C++来编写代码的过程中,指针使用不当造成内存泄漏一般就是因为new了一个对象并且使用完之转载 2015-10-12 08:09:37 · 502 阅读 · 0 评论 -
智能指针sp/wp使用
Android中定义了两种智能指针类型,一种是强指针sp(strong pointer),另外一种是弱指针(weak pointer)。其实称之为强引用和弱引用更合适一些。强指针与一般意义的智能指针概念相同,通过引用计数来记录有多少使用者在使用一个对象,如果所有使用者都放弃了对该对象的引用,则该对象将被自动销毁。弱指针也指向一个对象,但是弱指针仅仅记录该对象的地址,不能通过弱指针来访问该对象,转载 2015-11-14 15:21:04 · 518 阅读 · 0 评论 -
深入浅出单实例Singleton设计模式
单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。你希望这个类在整个系统中只能出现一个实例。当然,作为一个技术负责人的你,你当然有权利通过使用非技术的手段来达到你的目的。比如:转载 2015-11-16 16:25:07 · 265 阅读 · 0 评论 -
高效获得Linux函数调用栈/backtrace的方法
trace,除了函数名,还能获得代码行号方法4 libunwind这里面的方法2和方法4都尝试过,方法2的backtrace函数是通过读取操作系统的一个全局信息区,在多线程并发调用时,会造成严重的锁冲突。方法4的libunwind也存在开销较大的问题。最终采用了下面的方案:[cpp] view plaincopyprint?#define STACK转载 2015-11-21 15:56:13 · 1575 阅读 · 0 评论 -
通过Android trace文件分析死锁ANR
对于从事Android开发的人来说,遇到ANR(Application Not Responding)是比较常见的问题。一般情况下,如果有ANR发生,系统都会在/data/anr/目录下生成trace文件,通过分析trace文件,可以定位产生ANR的原因。产生ANR的原因有很多,比如CPU使用过高、事件没有得到及时的响应、死锁等,下面将通过一次因为死锁导致的ANR问题,来说明如何通过trace文件转载 2015-11-21 16:00:31 · 1533 阅读 · 0 评论 -
abdroid hwui
Android 4.4 Graphic系统详解(4)HWUI概述2015-01-28 17:48 2360人阅读 评论(0)收藏 举报分类: android graphic(7) 目录(?)[+]1 概述Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特转载 2015-12-09 21:10:36 · 1159 阅读 · 0 评论 -
android binder机制
1.binder通信概述 binder通信是一种client-server的通信结构, 1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用; 2.实际上,代理接口中定义的方法与server中定义的方法是一一对应的; 3.client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Pa转载 2015-11-17 16:30:39 · 227 阅读 · 0 评论 -
native parcel的分析
Parcel是android中不同于Java Serialize新的序列化机制。Java Serialize机制作用是能将数据对象存入字节流中,在需要时重新生成对象。主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。而android系统定位内存受限设备,对性能要求更高,而且系统中采用了binder ipc机制,就需要求性能更出色的对象传输方式。Parcel定位就是轻量级高效的转载 2015-11-17 16:39:50 · 1166 阅读 · 0 评论 -
ViewRotImpl
从上两篇博客《从setContentView方法分析android加载布局流程》 和《从LayoutInflater分析XML布局解析成View的树形结构的过程》 中我们了解到Activity视图UI是怎么添加到Activity的根布局DecorView上面的。我们知道Activity中的PhoneView对象帮我们创建了一个PhoneView内部类DecorView(父类为Frame转载 2015-12-10 09:58:38 · 415 阅读 · 0 评论 -
Android 4.4(KitKat)中的设计模式-Graphics子系统
本文主要从设计模式角度简单地侃下Android4.4(KitKat)的Graphics子系统。作为一个操作系统,Android需要考虑到灵活性,兼容性,可用性,可维护性等方方面面 ,为了达到这些需求,它需要良好的设计。因此,在Android源码中可以看到很多设计模式的身影。光是本文涉及的Graphics子系统中,就用到了如Observer, Proxy, Singleton, Command, D转载 2015-11-18 09:38:15 · 507 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger总体结构
转载 2015-11-18 09:41:27 · 391 阅读 · 0 评论 -
Choregographer工作原理分析
结论写在前面:Choreographer就是一个消息处理器,根据vsync 信号 来计算frame,而计算frame的方式就是处理三种回调,包括事件回调、动画回调、绘制回调。这三种事件在消息输入、加入动画、准备绘图layout 等动作时均会发给Choreographer。下面来看分析过程看过一些源码后,发现ui 绘制的管理,调度都是通过Choreographer这个类。1 Chor转载 2015-11-18 13:33:10 · 939 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的连接过程分析
前文在描述Android应用程序和SurfaceFlinger服务的关系时提到,每一个有UI的Android应用程序都需要与SurfaceFlinger服务建立一个连接,以便可以通过这个连接来请求SurfaceFlinger服务为它创建和渲染Surface。在本文中,我们将以Android系统的开机动画应用程序为例,详细描述Android应用程序是如何与SurfaceFlinger服务建立连接的。转载 2015-11-18 09:44:15 · 419 阅读 · 0 评论 -
SurfaceTexture
[首页][新闻][文章][登录] [注册] 首页Web开发Windows开发编程语言数据库技术移动平台系统服务微信布布扣其他数据分析 首页> 移动平台 > 详细 Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceVi转载 2015-11-18 16:59:32 · 6764 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger总体结构
Android4.4 GUI系统框架之SurfaceFlinger一. Android GUI框架:SurfaceFlinger:每当用户程序刷新UI的时候,会中介BufferQueue申请一个buffer(dequeueBuffer),然后把UI的信息填入,丢给SurfaceFlinger,SurfaceFlinger通过计算多重计算合成visibleRegi转载 2015-11-26 09:02:52 · 1045 阅读 · 0 评论 -
Android 4.4 Graphic系统详解(2) VSYNC的生成
VSYNC 的概念VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。“垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是垂直同步这个名字,因为LCD根本就没有垂直扫描的这种东西,因此这个名字本身已经没有意义。但是基于历史转载 2015-11-26 09:04:42 · 1363 阅读 · 0 评论 -
Android4.4 meminfo 实现分析
Android 4.4 meminfo 实现分析Posted byRogeron 2014 年 3 月 24 日 Android提供了一个名为meminfo的小工具帮助应用分析自身的内存占用,并且在4.4还新增了memtrack HAL模块,SoC厂商通过实现memtrack模块,让meminfo可以获取GPU相关的一些内存分配状况。了解meminfo的实现,对我们更深转载 2015-12-15 16:21:37 · 700 阅读 · 0 评论 -
Android中ActivityManagerService与应用程序(客户端)通信模型分析
本文原创 ,转载必须注明出处 :http://blog.youkuaiyun.com/qinjuning 今天主要分析下ActivityManagerService(服务端) 与应用程序(客户端)之间的通信模型,在介绍这个通信模型的基础上,再 简单介绍实现这个模型所需要数据类型。 本文所介绍内容基于android2.2版本。由于an转载 2015-11-28 13:29:41 · 551 阅读 · 0 评论 -
高通平台 graphics图形架构
Android display system introduce(Qualcomm 8x60 platform)(二、SW架构--1)2010-12-31 11:17一、Overview 上图的原型取自高通的文档,由于原图无法描述现有的架构,我在原图的基础了做了些修改,主要是增加了overlay部分,另外其他部分根据现有的软件也做了些许改动。下面先对上图做个大概的介绍,后面会转载 2015-12-17 09:06:16 · 2905 阅读 · 0 评论 -
ION概念及原理
ION将内核态形形色色的内存分配纳入统一的管理接口之中,更重要的设计意图是为内存在不同用户态进程之间传递和访问提供了支持。每个ion_buffer与一个struct file关联,其handle纳入进程file desc空间而不是/dev/ion设备内单独的handle空间,方便之处如下:每个buffer一个handle,便于更灵活地细粒度地控制每个buffer的使用周期;向用户进程输转载 2015-12-17 18:08:24 · 2114 阅读 · 0 评论 -
git reset 和 git revert 的区别
很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以用git reset --hard 去撤销这次修改但是这样做也有问题,可能之前本地的,没有提交的修改,都消失了。可以尝试git revert命令reset是指将当前head的内容重转载 2016-01-02 14:31:45 · 695 阅读 · 0 评论 -
android 的init.rc
init.rc由许多的Action和Service组成。每一个语句占据一行,并且各个关键字被空格分开.由 # (前面允许有空格)开始的行都是注释行(comment)一个actions 或 services 的开始隐含声明了一个新的段,所有commands 或 options 属于最近的声明。在第一个段之前的 commands 或 options 都会被忽略每一个action转载 2015-12-03 14:02:40 · 410 阅读 · 0 评论 -
回调函数
什么是回调函数简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。为什么要使用回调函数 因为使用回调函数可以把调用者和被调用者分开,调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。回调函数就好像是一个中断转载 2015-12-04 09:16:55 · 479 阅读 · 0 评论 -
堆和栈
堆和栈的区别一、程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(st转载 2015-12-04 09:26:19 · 321 阅读 · 0 评论 -
ARM寻址方式及相关指令汇总
1、寻址方式所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。(1)立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令:[plain] view plaincopyADD R0,R0,#1 ;R0←R0+1 ADD R转载 2015-12-04 09:30:24 · 1036 阅读 · 0 评论 -
android 生成的.so 调试方法
readelf显示目标ELF文件的信息,比如信赖库,头信息,段信息等。addr2line用户进程崩溃时内核会记录一些基本的调试信息,如果进程执行的ELF文件包含调试符号,就可以通过addr2line找到源文件中哪一行出问题。我在调试Android的VM崩溃问题时使用到了这个工具(详细过程参考这里http://blog.youkuaiyun.com/a345017062/archive/2011/0转载 2015-12-04 09:19:41 · 960 阅读 · 0 评论 -
android surfaceflinger研究----显示系统, Surface机制, SurfaceFlinger loop
转载自http://blog.youkuaiyun.com/windskier/article/details/7030732 这周抽空研究了一下SurfaceFlinger,发现真正复杂的并不是SurfaceFlinger本身,而是android的display显示系统,网上关于这部分的介绍有不少,本不打算写的,但是发现还是记录一下研究代码的过程比较好,一是能够帮助自己理清思路,另一个原因就是以后转载 2015-12-23 17:04:47 · 1995 阅读 · 0 评论 -
android系统中log机制
Android提供了用户级轻量的LOG机制,它的实现贯穿了Java,JNI,本地c/c++实现以及LINUX内核驱动等Android的各个层次,而且足够简单清晰,是一个相当不错的解读案例。本系列文章针对LOG机制的内部实现机理进行解读,本文是系列的第一篇,解读LOG机制的实现架构。(1)LOG的实现架构LOG的运行环境 下图是Android官方网站上给出的Androi转载 2015-12-08 09:58:54 · 6003 阅读 · 1 评论 -
thread 源码分析
线程是程序的一个执行流程,Java虚拟机允许多个线程同时并发执行。1. 构造方法Java代码 public Thread() { init(null, null, "Thread-" + nextThreadNum(), 0); } // target - 任务 public Thread(Runnable target) { ini转载 2015-12-08 15:36:17 · 337 阅读 · 0 评论 -
DVFS--动态电压频率调整
DVFS--动态电压频率调整标签: transitiondebugginglinux内核工作performancelinux2012-10-19 11:28 4608人阅读 评论(0)收藏举报分类: CPU&GPU(17) HW(20) 基础知识(55) Linux低功耗研究也有一段时间了,基本转载 2016-02-06 13:32:14 · 1555 阅读 · 0 评论 -
minicom 使用方法
因为现在电脑基本不配备串行接口,所以,usb转串口成为硬件调试时的必然选择。目前知道的,PL2303的驱动是有的,在dev下的名称是ttyUSB#。minicom,tkterm都是linux下应用比较广泛的串口软件,这里简单介绍minicom使用。一,安装sudo apt-get install minicom二,配置安装完成后,请不要着急打开软件。需先进行配置。具体步转载 2016-02-06 14:57:53 · 14891 阅读 · 0 评论 -
linux 内核编译
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说2012-05-17 00:38:37分类: LINUXlinux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说linux内核编程4部曲之二:增加linux内核系统调用linux内核编程4部曲之三:修改O(1)调度算法linux内核编程4部曲之四:模块编程转载 2016-03-06 16:20:02 · 378 阅读 · 0 评论 -
linux 内核驱动开发
一、为什么要学习内核?有些人要学习内核,而有些人则可以不学习它。你如果以后要从事系统研发或驱动开发的话,就要学习内核。刚刚接触内核,主要学习内核的接口函数。不要深入的去读内核,因为你读也读不懂,内核代码庞大如野兽一般不可驾驭。学习内核主要掌握层次学习法,即从头开始学习,一环紧扣一环。内核学习的四步学习法:1、核心理论学习-概念与函数原型2、范例程序分析3、思维导图设计4、亲自编写代转载 2016-03-06 16:23:15 · 3703 阅读 · 0 评论 -
DVFS
Linux低功耗研究也有一段时间了,基本把低功耗的实现方式想清楚了(主要分成机制和策略),这段时间的工作主要在机制上。暂时想实现的主要的机制有:cpu级,设备驱动级,系统平台级。管理颗粒度不断递增,形成三驾马车齐驱的形势。 cpu级:主要实现比较容易的在系统处于目标在于频繁发生、更高粒度的电源状态改变,主要的实现方式为idle,包括今天的主要想讲的动态主频。 设备驱转载 2016-05-02 12:26:05 · 3235 阅读 · 0 评论 -
android debug sp方法
一. Eclipse模拟器的调试1. 基本方法:断点+单步①快捷键与VC有差别DEBUG:F11加断点:Shift + Ctrl + BStep Into: F5Step Over: F6Resume: F8②可以选择设备,模拟器和真机都可以使用 2. 进阶:DDMS使用①功能强大可以进行手机屏幕截图、查看文件系统、看LOG等。②模拟器可转载 2016-07-09 19:48:39 · 433 阅读 · 0 评论 -
视频播放器无法播放720P 30fps的视频debug
分析:分析log如下: 08-09 11:46:01.720 103 180 E gralloc.mali: ION_IOC_ALLOC fail08-09 11:46:01.720 103 180 W GraphicBufferAllocator: alloc(1280, 720, 33, 10002900, ...) failed -12 (Out of m转载 2016-07-09 20:06:38 · 1825 阅读 · 0 评论 -
android 内存进程管理分析
1、 进程的地址空间在32位操作系统中,进程的地址空间为0到4GB, 示意图如下: 图1 这里主要说明一下Stack和Heap: Stack空间(进栈和出栈)由操作系统控制,其中主要存储函数地址、函数参数、局部变量等等,所以Stack空间不需要很大,一般为几MB大小。 Heap空间的使用由程序员控制,程序员可以使用malloc、n翻译 2016-07-09 20:11:32 · 1730 阅读 · 0 评论