当前搜索:

【Arch】Android input系统之input命令

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

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

1、RefBase简介什么是RefBase?RefBase是Android中的一个C++类,用于内存管理,相关的类还包括LightRefBase、sp和wp。在Android源码中的许多地方都可以看到RefBase的使用,那么,为什么RefBase这么受欢迎呢?这源于C++的指针与动态内存管理,指...
阅读(1282) 评论(0)

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

|- art // Android Runtime,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性,包括以下几个目录。 |- benchmark // 程序测试基准。 |- build // 编译...
阅读(4198) 评论(0)

【Android】Android SurfaceFlinger之VSync

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

【Android】Android SurfaceFlinger之SurfaceFlinger启动过程

SurfaceFlinger的启动脚本surfaceflinger.rc内容如下:service surfaceflinger /system/bin/surfaceflinger class core user system group graphics drmrpc r...
阅读(1326) 评论(0)

【Android】Android SurfaceFlinger之BufferQueue

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

【Android】Android SurfaceFlinger之NativeWindow

1、EGLNativeWindowTypeAndroid的GUI构建于OpenGL ES,对于2D图形来说还可以使用Skia库(https://skia.org/)。在OpenGL ES与底层的framebuffer之间,还有一层Native介质,如NativeWindow、NativeDispl...
阅读(1719) 评论(4)

【Android】Android SurfaceFlinger之Gralloc

1、SurfaceFlinger模块Android中SurfaceFlinger与其它模块的关系图如下所示:上图中,最底层的是Linux内核提供的framebuffer显示驱动,设备节点为/dev/graphics/fb*或/dev/fb*,其中fb0表示第一个monitor。HAL层提供了Gra...
阅读(1537) 评论(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 = PTH...
阅读(1349) 评论(0)

【Android】Android SurfaceFlinger之OpenGL ES

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

【Bash百宝箱】envsetup.sh及lunch

在Android开发环境中编译一个目标时,一般要执行下面三行命令:$ . build/envsetup.sh $ lunch <product_name>-<build_variant> $ make [module]这三行命令是什么意思呢?下面逐一介绍。1、envsetu...
阅读(1230) 评论(0)

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

在涉及多线程、多进程编程时,同步问题是不可避免的。在不同的操作系统或者项目中,都有自独特的同步手法,不过同步原理基本相同。在Android系统中,封装了几个同步类,下面来看一下这些同步类的源码是如何实现的。1、MutexMutex是个互斥锁,即MUTual EXclusion,对pthread的m...
阅读(2036) 评论(0)

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

MakefileAndroid编译系统基于GNU make,用来管理Makefile,Makefile的基础知识可参考: http://blog.csdn.net/ieearth/article/details/47296429Makefile最一般的规则就是个依赖树,如下:target: pr...
阅读(1058) 评论(0)

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

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

【Arch】Android系统简介

Google IO下面是Google IO的logo(IO是什么意思?网上有几个不同版本的解释)——Google IO是由Google举办的网络开发者大会,旨在讨论用Google和开放网络技术去开发网络应用。Google IO大会从2008年开始,在美国加州旧金山每年举行一次。2015年的Goog...
阅读(772) 评论(0)

【Bash百宝箱】adb

adb即Android Debug Bridge,是一个通用的命令行工具,用来与安卓设备或模拟器交互。adb是一种client-server程序,由三个部分组成:client、server和daemon。 adb工具位于安卓sdk的platform-tools目录下。 adb命令语法—— adb...
阅读(901) 评论(0)
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 41万+
    积分: 7066
    排名: 4026
    HELLO WORLD
    博客专栏
    文章分类