当前搜索:

【Arch】Android input系统之input命令

1、简介在Android input系统中,包括一个input命令,用于模拟input事件,通过keycode或字符串向设备发送key事件。2、源码位置frameworks/base/cmds/input/3、结构input命令实际上就是一个shell脚本,真正执行的是app_process命令,所用的Java类库为input.jar。从源码Input.java中可以看出,input事件来源包括ke...
阅读(708) 评论(0)

【C++】Android (Light)RefBase-sp-wp引用计数-智能指针源码分析

1、RefBase简介什么是RefBase?RefBase是Android中的一个C++类,用于内存管理,相关的类还包括LightRefBase、sp和wp。在Android源码中的许多地方都可以看到RefBase的使用,那么,为什么RefBase这么受欢迎呢?这源于C++的指针与动态内存管理,指针本身就是一个复杂的概念,而动态内存管理又提高了其复杂性,new一般情况下与delete配对使用,防止内...
阅读(1056) 评论(0)

【Arch】Android 7 Nougat源码目录结构分析

|- art // Android Runtime,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性,包括以下几个目录。 |- benchmark // 程序测试基准。 |- build // 编译文件。 |- cmdline // 命令行工具的初始化与解析。...
阅读(3127) 评论(0)

【Android】Android SurfaceFlinger之VSync

1、VSync简介在Android GUI系统的多缓冲机制中,一个关键性的角色是VSync,充分利用了CPU/GPU与Display的交互机制,让UI表现更流畅。VSync即Vertical Sync,因为Display是逐行扫描的,从上到下,当扫描到最后一行时便返回第一行进行下一轮扫描,从最后一行返回到第一行有一段时间间隔,此时发出一个VSync信号,通知系统进行swap buffer(认为这个时...
阅读(1111) 评论(0)

【Android】Android SurfaceFlinger之SurfaceFlinger启动过程

SurfaceFlinger的启动脚本surfaceflinger.rc内容如下:service surfaceflinger /system/bin/surfaceflinger class core user system group graphics drmrpc readproc onrestart restart zygote writepid /d...
阅读(914) 评论(0)

【Android】Android SurfaceFlinger之BufferQueue

在Android中,BufferQueue是Surface实现本地窗口的关键,驻留在SurfaceFlinger进程中进行服务,下面从BufferQueue的结构开始分析。1、BufferQueue模式BufferQueue相关的源码在frameworks/native/libs/gui/,涉及以下几个重要的数据结构:class BufferQueue; class BufferQueueCore;...
阅读(2247) 评论(1)

【Android】Android SurfaceFlinger之NativeWindow

1、EGLNativeWindowTypeAndroid的GUI构建于OpenGL ES,对于2D图形来说还可以使用Skia库(https://skia.org/)。在OpenGL ES与底层的framebuffer之间,还有一层Native介质,如NativeWindow、NativeDisplay和NativePixmap,这里讨论NativeWindow。OpenGL ES是跨平台的,为了适配...
阅读(1192) 评论(4)

【Android】Android SurfaceFlinger之Gralloc

1、SurfaceFlinger模块Android中SurfaceFlinger与其它模块的关系图如下所示:上图中,最底层的是Linux内核提供的framebuffer显示驱动,设备节点为/dev/graphics/fb*或/dev/fb*,其中fb0表示第一个monitor。HAL层提供了Gralloc和Composer,其中Gralloc包括fb和gralloc两个设备,fb负责打开内核中的fr...
阅读(1090) 评论(0)

【Android】Android SurfaceFlinger之OpenGL库加载过程

1、egl_init_driversAndroid中OpenGL库加载从egl_init_drivers函数开始,源码位置在frameworks/native/opengl/libs/EGL/egl.cpp。static pthread_mutex_t sInitDriverMutex = PTHREAD_MUTEX_INITIALIZER;EGLBoolean egl_init_drivers()...
阅读(1025) 评论(0)

【Android】Android SurfaceFlinger之OpenGL ES

1、OpenGL ES在Android系统中,直接面向终端用户的便是GUI,可以说任何一款产品的UI都是至关重要的,是用户可以实实在在感受到的东西,是最直观的、最易被感知的东西。SurfaceFlinger作为Android GUI系统的核心模块,与OpenGL ES息息相关,所以在分析SurfaceFlinger之前有必要先了解一下OpenGL ES。OpenGL即Open Graphics Li...
阅读(1428) 评论(0)

【Bash百宝箱】envsetup.sh及lunch

在Android开发环境中编译一个目标时,一般要执行下面三行命令:$ . build/envsetup.sh $ lunch - $ make [module]这三行命令是什么意思呢?下面逐一介绍。1、envsetup.shenvsetup.sh是个shell脚本,位于build目录下,第一行命令便是执行这个脚本。执行脚本有多种方式,那为什么...
阅读(1034) 评论(0)

【C++】Android中的同步机制

在涉及多线程、多进程编程时,同步问题是不可避免的。在不同的操作系统或者项目中,都有自独特的同步手法,不过同步原理基本相同。在Android系统中,封装了几个同步类,下面来看一下这些同步类的源码是如何实现的。1、MutexMutex是个互斥锁,即MUTual EXclusion,对pthread的mutex进行了简单的封装,内部还有个嵌套类AutoLock,从名字上就可以看出这个类的功能是自动加锁解锁...
阅读(1550) 评论(0)

【Bash百宝箱】Android编译系统(Makefile)

MakefileAndroid编译系统基于GNU make,用来管理Makefile,Makefile的基础知识可参考: http://blog.csdn.net/ieearth/article/details/47296429Makefile最一般的规则就是个依赖树,如下:target: prerequisites commandstarget是我们编译时要生成的目标,prerequis...
阅读(868) 评论(0)

【Bash百宝箱】Android源码下载及编译

版本管理在分析Android源码之前,首先要了解一下相关的版本管理工具。Git工具是一种分布式的版本管理系统,最初被设计用于Linux内核的版本控制。Git功能强大,但也有之不便之处,Android中有许多项目,用git来统一管理就显得力不从心了,为此Google用Python开发了一套专门用来管理整个Android系统的工具repo。使用repo的基本流程——a. 使用repo init创建分支。...
阅读(776) 评论(0)

【Arch】Android系统简介

Google IO下面是Google IO的logo(IO是什么意思?网上有几个不同版本的解释)——Google IO是由Google举办的网络开发者大会,旨在讨论用Google和开放网络技术去开发网络应用。Google IO大会从2008年开始,在美国加州旧金山每年举行一次。2015年的Google IO大会重点发布了三大智能平台,包括移动端、可穿戴设备和物联网。移动端—— 全新的移动端平台An...
阅读(624) 评论(0)
16条 共2页1 2 下一页 尾页
    个人资料
    • 访问:326444次
    • 积分:6057
    • 等级:
    • 排名:第4703名
    • 原创:257篇
    • 转载:0篇
    • 译文:5篇
    • 评论:45条
    Make Others Better.
    博客专栏
    文章分类