Android系统源码分析
文章平均质量分 80
猫哥,你好
这个作者很懒,什么都没留下…
展开
-
Android系统6.0源代码编译过程分析(1)
1 绪论Android是一种基于 Linux 内核、自由开放源代码的操作系统, 由 Google 公司和开放手机联盟共同领导及开发, 主要使用于移动设备。首先就从系统源代码下载与编译过程分析开始。2 编译环境搭建准备工作(1) UbuntuKylin 16.04 LTS 链接内容 (2) Android 6.0_r1 (3) Open JDK 73 系统源码下载...原创 2018-07-16 13:11:21 · 2637 阅读 · 5 评论 -
Android Handler实例分析过程
通过上篇文章《Android系统Message、Handler、Messagequeue、Looper之间关系的理论简介》 的概述,如果只有理论部分,读者看起来会比较的枯燥、乏味,因此本篇文章就通过一个上层应用的实例,来分析一下Handler用法。代码如下: 1、Message.java代码:public class Message { Handler targer; pub...原创 2018-07-08 10:06:30 · 594 阅读 · 0 评论 -
iTOP4412开发板之Android5.1系统编译
搭建编译环境是基于 UbuntuKylin 14.04系统(实体机)操作,本文包括uboot编译、内核编译、Android5.1的下载与编译。1 编译环境准备工作(1) 交叉编译器配置在vim .bashrc文件,配置交叉编译工具:(注意:此“arm-2009q3.tar.bz2”工具是4412开发板所提供的,解压后放到配置文件路径即可,若没有arm文件目录,可自行创建 )打开bashrc...原创 2018-12-18 17:06:06 · 943 阅读 · 0 评论 -
Android6.0系统View事件分发
上篇文章《快速了解Android6.0系统触摸事件工作原理——InputManagerService》分析到dispatchTouchEvent()方法来做分发事件的处理,这个分发过程分为两种情况:(1)若目前的View是普通的View,就会调用View.java的dispatchTouchEvent()方法来处理。普通的View,比如TextView里面并没有实现dispatchTouchEve...原创 2018-07-15 16:30:28 · 425 阅读 · 0 评论 -
快速了解Android6.0系统触摸事件工作原理——InputManagerService
简介Android的事件处理是在Linux基础上完成的。事件的最开始是由硬件监听到,然后通过硬件分到Kernel,Kernel在分到框架层,最后最后框架层把事件分布到应用程序的UI中。下面就以触摸事件为例进行分析。 当有事件发生的时候,硬件首先监听到,然后InputDriver起作用,而框架层的EventHub类一直在InputDriver中读事件;当EventHub类读到事件之后,Even...原创 2018-07-14 15:47:53 · 3882 阅读 · 0 评论 -
Android系统6.0源代码编译过程分析(2)之编译SDK及内核
通过上篇文章《Android系统6.0源代码编译过程分析(1)》分析下载Android6.0系统源码和编译源码的过程,编译源码成功后运行模拟器,如图所示: 经过漫漫长路,终于把下载源码和编译源码搞定了,接下来,继续分析编译SDK和内核。1 编译SDK注意:编译SDK的时候会把之前编译完成的out文件夹下的部分内容删除重新编译,读者可以在编译SDK之前最好备份out文件夹,其实不备...原创 2018-07-06 20:21:37 · 2016 阅读 · 0 评论 -
Android系统Message、Handler、Messagequeue、Looper之间关系的理论简介
1 简介Handler获取当前线程中的Looper对象,Looper用来从存放Message的MessageQueue中取出Message(消息)的,Handler进行Message的分发和处理。2 概念介绍(1)Messagequeue(消息队列):用来存放通过Handler发送的消息,通常附属于某一个创建的线程,可以通过Looper.myQueue()得到当前线程的消息队列。 (...原创 2018-07-06 16:55:02 · 805 阅读 · 0 评论 -
Android消息机制之Message分析
在整个消息机制中,message又称为task,它封装了任务携带的信息和处理该任务的handler。尽管Message有public的默认构造方式,但是读者应该通过Message.obtain()来从消息池中获取空消息对象,以节约资源;除非消息池中没有空消息对象,就先new()消息。下面分析下Message类的属性结构部分:public final class Message implements...原创 2018-07-05 11:43:54 · 2390 阅读 · 0 评论 -
Android6.0输入系统之EventHub源码分析
上篇文章《Android6.0输入系统之InputManagerService构成分析》 完成了IMS的创建,接着就沿着输入系统这条路继续往下走。 在EventHub的构造函数中,它通过INotify与Epoll机制建立起对设备点增删事件及可读状态的监听。INotify是Linux内核所提供的一种文件系统变化通知机制。它可以为应用程序监控文件系统的变化,如文件的新建、删除、读写等等。它有两个基本...原创 2018-07-10 20:18:45 · 2727 阅读 · 0 评论 -
Android6.0输入系统之InputManagerService构成分析
初始化 epoll 与 inotify /frameworks/base/services/java/com/android/server/SystemServer.javaprivate void startOtherServices() { ... Slog.i(TAG, "Input Manager"); //新建IMS对象 inputManager =...原创 2018-07-10 17:14:41 · 844 阅读 · 0 评论 -
iTOP4412开发板之Android5.1系统烧写
通过上篇文章讲述完毕后,本次就开始进行如何在iTOP4412开发板中烧写Android5.1系统。1 镜像组合① Uboot 镜像“u-boot-iTOP-4412.bin”②内核镜像“zImage”③ 文件系统“ramdisk-uboot.img”和“system.img”2 烧写流程将上述的四个镜像拷贝到“platform-tools”文件夹下,(注意:烧写工具"platform-...原创 2018-12-18 17:45:47 · 982 阅读 · 0 评论