Android系统深度游

2023-05-16

项目原因,让我们必须深入探索Android系统,完成对之前的我们来说比较艰巨的任务。这样,我们开启了Android深度游。

         Android这个系统,应用层开发还是比较舒服的,Google把一切都安排好了,只要会Java就可以开发出绚烂多彩的应用。而它的内部还是比较庞大的,啃动它还是比较困难的,虽然它是open的,但面对海洋一般的代码,难免会迷失。

         先看看Android系统的架构图

从下到上共分四层:Linux kernel、libraries、application framework、applications

Android是基于Linux内核的,这是第一层。这就意味着你要有Linux的经验。Lniux内核与Linux驱动的知识是少不了的。对于内核相关的书籍,个人正在看两本国人写的书《Linux内核完全注释》和《Linux内核源代码情景分析》。

         前一本书的作者是赵炯,主要分析0.11版的kernel。从代码量较少的但比较成型的内核说起,容易理解也不会被庞大的代码量所吓到。内面对linux历史背景和一些原理都有讲解,这样比干巴巴的分析代码强多了,也易于理解和消化。

         另一本书的作者阵容还是很强大的。作者毛德操与胡希明都是教授级的人物,毛先生现已定居美国,而此书是两人联袂把当时共事时的心得与体会都分享出来,其实也是对过往岁月的一种纪念,一种友谊万岁的情怀。本书针对kernel 2.4.0,超级详细的理清脉络,从情景出发分析探寻kernel世界。是本不可多得的国人经典。

驱动方面,其实是整个内核代码量最多的部分。但我最近都是在网上找一些资料,并没有深入读书研究,可以延后再办。

第二层是公共库和Android的运行时,Libraries都是很大的题目,有专门的书籍讨论,而我主要把精力放在Android运行时上。

         Android运行时是由Dalvik虚拟机和核心库组成的。这方面可以阅读杨丰盛的《Android技术内幕:系统卷》,专门开辟一张来讲虚拟机。别看运行时只占架构图中的一小部分,但它的重要性很高,每个应用程序都是跑在这里的。

第三层是应用框架层,为第四层应用层暴漏API接口。

期间我阅读以下几本书,感觉都能够学到一些东西。都是国人所做。

1.《深入理解Android》(卷1)和(卷2) 邓凡平著。

         我的启蒙书。在这里我仔细学习了VOLD等详细分析,至今印象深刻。前后两本,足够带你去Android的内部逛一圈,并且有所收获。把它们放在桌上,随时翻阅,随时收益。从Android框架的初始化开始,走过的所有组件,都有涉猎。但当某一个知识点需要更详细的分析时,感到书中给出的略有些不足。这可以理解,因为知识覆盖面太广,谁也不是各个领域的专家,有不足很正常。

2.《Android技术内幕:系统卷》 杨丰盛著。

         此书是我最早入手的,大概是刚刚上市。当时我正在做Android应用开发,由于其太深入到系统内部了,涉及各种驱动,读起来吃力不讨好。放下了,最近捡起来一看,也会找到我想要的,真是庆幸自己当时的选择。

3.《Android内核剖析》 柯元旦

         内核剖析,是用来吸引人的,并没有得到大家的共鸣。本书覆盖的知识点很广,但是有些蜻蜓点水,一带而过。最可怕的是,错别字很多,有些都影响到内容的表达了。我的评价不高,大家可以试读一下。

4.《深入剖析Android系统》 杨长刚

         印象最深的是Android的启动过程,里面讲的很不错。我之前没有深入分析,读过之后感觉澄清了许多问题,也弥补了之前的无知。读起来也不错,但是时间原因不能精读,放在那里随时翻阅。

最后,贴一张很有营养的图,来自makelinux。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android系统深度游 的相关文章

  • 使用TensorFlow Object Detection API进行图像物体检测

    参考 https github com tensorflow models tree master object detection 使用TensorFlow Object Detection API进行图像物体检测 准备 安装Tensor
  • 【Java笔记】异常处理(try-catch-finally、throws、throw)

    在 Java 语言中 xff0c 将程序执行中发生的不正常情况称为 异常 注 xff1a 开发过程中的语法错误和逻辑错误不是异常 在编写程序时 xff0c 经常要在可能出现错误的地方加上检测的代码 xff0c 如进行 x y 运算时 xff
  • 常用Log抓取方法

    1 最常用抓取方法 尽可能保存issue现场 xff0c 记录issue时间 adb pull data logs 2 使用电脑cmd连接device xff0c 并使之正常输出logcat信息 adb logcat gt 路径 main
  • jq获取和设置标签的css样式、jq给标签增加或移除class属性

    1 jQuery获取和设置标签的css样式 jQuery既可以直接获取标签的css样式 xff0c 也可以设置样式 xff0c 包括行内 内部 外部样式 xff1b 思路 xff1a 先要选取这个标签 xff0c 然后再获取或者设置样式 x
  • LwIP多TCP连接问题

    多个TCP连接的问题困扰了我很久 xff0c 前段时间解决了这个问题 xff0c 现在写下我的感受 xff1a 多个TCP可以绑定多个端口 xff0c 这里我是绑定一个端口 xff0c 这样更加复合实际应用 xff08 我的多个TCP的功能
  • GitHub Pages 绑定个人域名

    文章目录 一 购买域名二 配置域名解析三 GitHub Pages 绑定个人域名四 本地设置 CNAME五 重新发布网站 之前我们已经使用 github 搭建好了个人网站 xff0c 可以通过 xxx github io 来访问自己的网站
  • Pycharm提示 Unresolved reference 的解决办法

    有时候a py和b py在一个目录里面 xff0c 但是在a py种写import b有时会提示Unresolved reference xff0c Pycharm常见 xff0c 解决办法是setting gt Project gt Pr
  • 解决idea新建maven项目时一直loading问题

    idea里新建maven项目时 xff0c 在create from archetype时 xff0c 一直显示loading archetype list 原因 idea一直读自己的配置里缓存导致的 解决 方案一 把 C Users Ad
  • 安装windows时install.wim文件过大的解决方案

    安装windows时install wim文件过大的解决方案 问题描述解决方法 问题描述 windows镜像文件中 xff0c install wim大于4GB 直接解压镜像到u盘制作启动盘的方法只能用fat32格式 xff0c 不支持大于
  • Ubuntu 14 桌面图标消失解决办法

    1 使用ctrl 43 alt 43 F1进入字符命令界面 xff0c 登录账户 2 使用命令mv config config bk xff0c 相当于删除备份文件 xff0c 重启后页面正常
  • 在vue项目中使用Lottie动画(随看随用)

    前言 xff1a Lottie是一个IOS xff0c Android和React Native库 xff0c 可以实时渲染动画 xff0c 动画被转化成JSON文件 xff0c 节省了很多资源 xff0c 允许应用程序像使用静态图像一样轻
  • 对于python中“FileNotFoundError: [Errno 2] No such file or directory”的解决办法

    在我们使用vscode运行Python代码时遇到的情况 一 出现原因 xff1a 这里是由于Vscode中 xff0c python里的路径是相对与工作目录来进行定位的 所以在多级目录情况下 xff0c 若不设置绝对路径 xff0c 往往找
  • 《构建Debian的精彩世界》

    2007 10 06 星期六 12 04 darkblue 这段时间在公司一直使用Ubuntu系统 xff0c 其实刚来的时候用的是Debian xff0c 也是我头一次安装 配置和使用Debian系统 后来为了统一开发环境 xff0c 才
  • 由于找不到VCRUNTIME140_1.dll,无法继续执行代码。重新安装程序可能会解决此问题

    重装office之后双击Excel和PowerPoint无法正常打开 并弹出如下提示 并且 docx文件和 xls文件图标变成了下图所示 双击 docx xff0c 弹出Global Labeling Management Print To
  • Java 在Linux使用crontab进行定时任务设置并执行jar

    需求 xff1a 通过java执行linux命令 xff0c 通过crontab定时执行jar 通过java执行定时任务时需要监理shell文件和一个txt文件 xff0c 通过将txt文件设置到crontab中 xff0c 定时调用 sh
  • apache配置多个版本php

    主要虚拟主机配置信息 FcgidInitialEnv PHPRC D phpstudy php55n 指定php目录 AddHandler fcgid script php FcgidWrapper D phpstudy php55n ph
  • 解决 Could not find com.android.tools.build:gradle 问题

    现在CSDN的文章也不靠谱 xff0c 都是复制粘贴 回到问题 repositories 也设置了 下载 gradle 6 8 1 all zip setting gradle use gradle from 选择 gradle wrapp
  • #移动开发者大会#总结

    移动开发者大会 总结 xff08 有限的发言者 xff09 xff1a 李开复 xff1a 1 Android将在中国一骑绝尘 今年底中国将有4000万台Android手机 xff0c 2000万台iPhone 明年底总数会翻一倍 xff0
  • 2011河北金融学院CSDN高校俱乐部动员大会

    2011年11月24日下午二点 xff0c 我校CSDN高校俱乐部动员大会在教学楼B123举行 该次大会主要针对大一学生召开 xff0c 号召大家了解并加入CSDN高校俱乐部 俱乐部指导老师王洪涛老师 计算机协会指导老师杜光辉老师 以及优秀
  • “激情与梦想 我的程序员之路”—2012高校巡讲

    2012年3月29日下午2点半 xff0c CSDN高校俱乐部项目主管潘永强老师在我校进行了一场以 激情与梦想 xff0c 我的程序员之路 为主题的演讲 信息管理与工程系团总支书记陈春燕 指导老师王洪涛以及杜光辉 刘冲等7位老师出席了该次讲

随机推荐

  • Linux基础.交叉编译工具链,makefile

    一 交叉工具链大纲 1 什么是交叉工具链 xff1f 什么是交叉编译 xff1f 2 安装交叉工具链方法 xff0c 结合环境变量PATH xff0c 工具链选项 3 Makefile使用 xff0c Makefile书写规则 4 嵌入式静
  • 基于TensorFlow2.3.0的花卉识别Android APP设计

    一 前言 本设计为基于TensorFlow2 3 0的花卉识别Android APP TensorFlow2 3 0的API简单易用 xff0c 训练好后模型导出tflite格式供Anroid APP使用 开发环境 xff1a Window
  • Docker部署 nodejs项目应用 一 : 安装docker

    尝试一下用docker容器 xff0c 那么首先要安装docker 一 安装docker 由于笔者服务器的系统是centos7 xff0c 所以这里写的是在centos7上安装docker xff1b 注 xff1a Docker 要求 C
  • Java 反射 -超详细讲解(附源码)

    学到spring框架的时候 xff0c 发现反射思想很重要 xff0c 故特此写下此文 xff0c 以加深理解 文章目录 1 xff1a 反射概述2 xff1a Class对象特点3 xff1a 反射的使用1 获取类对象2 利用反射机制创建
  • 推荐7款好用的终端工具

    点击上方 IT牧场 xff0c 选择 置顶或者星标 技术干货每日送达 1 Cmder 下载地址 xff1a https cmder net Cmder是一个代替cmd的终端工具 只能操作Windows 它的好处是 xff1a 支持大部分Li
  • STM32 FMC原理详解

    关于FSMC的基本原理已经在这两篇讲解了 xff0c 如果有不懂的建议先看一下 xff0c 这里我们对一些基本概念会说的少一些 xff0c 主要就是针对FMC的特点和FSMC跟FMC的区别做主要的阐述 区别不大 STM32 FSMC FMC
  • 【机器学习】Scikit-learn介绍

    一 Scikit learn简介 Scikit learn是一个支持有监督和无监督学习的开源机器学习库 它还为模型拟合 数据预处理 模型选择和评估以及许多其他实用程序提供了各种工具 二 拟合和预测 xff1a 估算器基础 Fitting a
  • 我的2011--快乐最重要

    呵呵 xff0c 听着郭德纲和于谦老师的相声 xff0c 开始写这篇文章 xff0c 刚毕业不到六个月 xff0c 就换了一份工作 xff0c 很多事情都在意料之外 xff0c 很多事情又在意料之中 xff0c 总之 xff0c 以后回忆到
  • 朱金灿:韧性、悟性、具备快速学习能力是我喜欢的特质

    英雄会是CSDN旗下针对国内IT技术领域专家展示和交流的平台 通过线下线上的互动形式 xff0c 为CSDN社区专家提供更多学习 合作 宣传的机会 英雄会后续将在北上广深等国内一二线城市建立分会 xff0c 各个分会后期将组织技术交流活动
  • 远程连接工具Wind_Term打开远程Linux服务器图形化界面

    我们知道想要在Windows打开Linux图形化程序 xff0c 一个耳熟能详的工具MobaXterm是可以做到的 xff0c 但是不是唯一的工具 xff0c 具有支持X11 转发的工具都是可以实现的 xff0c Wind Term就是这么
  • Error: Failed to load parser ‘babel-eslint‘ declared in

    解决办法 xff1a 使用手动安装 babel eslint npm i D babel eslint
  • 理解依赖注入DI和控制反转IOC和容器

    简介 依赖注入 Dependency Injection 简称 DI xff0c 目的是让代码耦合度降低 xff0c 模块化程度高 xff0c 让代码更易测试 什么是依赖 为什么会有依赖 xff1f 因为我们为了模块化 xff0c 把各种小
  • React生命周期及事件详解

    一 组件的详细说明和生命周期ComponentSpecs and Lifecycle 组件的详细说明 xff08 Component Specifications xff09 当通过调用 React createClass 来创建组件的时候
  • Eclipse代码提示功能失效

    Eclipse 代码提示功能失效问题解决 Windows gt preferences gt java gt Editor gt Code Assist中Auto Activetion中的Enable auto activetion选项要勾
  • VM-tools选项为灰色无法安装的问题

    安装虚拟机VMware时 xff0c 桌面上没有vmware tools的安装光盘 虚拟机 gt 重新安装vmware tools选项为灰色 xff0c 也无法选择 尝试了将CD DVD SATA 的使用ISO映像文件改为物理驱动器 自动检
  • 数据库学习 - like(模糊查询)

    模糊查询问题 比如查询姓张的同学 xff0c 查询张某某等这类型问题 xff0c 在 select语句中通过查询条件中加入运算符 like 来表示 xff1b 含有 like运算符的表达式 列名 not like 字符串 xff08 表示其
  • 蓝桥杯2022年第十三届省赛真题-X进制减法(超详细解析)

    转自作者弗莱 详细解析和分享经验 进制规定了数字在数位上逢几进一 X 进制是一种很神奇的进制 xff0c 因为其每一数位的进制并不固定 xff01 例如说某种 X 进制数 xff0c 最低数位为二进制 xff0c 第二数位为十进制 xff0
  • WearOS复杂数据的刷新

    表盘可以通过setDefaultSystemComplicationProvider int watchFaceComplicationId int systemProvider int type 来设置要显示的系统复杂数据 一 系统支持哪
  • VMware下使用Gparted对系统盘扩容

    第一步 xff0c 下载Gparted的iso镜像文件 xff0c 这里对应下载相应的32或者64位版本 第二步 xff0c 设置虚拟机 xff0c 将硬盘容量扩容为指定的容量 xff0c 保存 第三步 xff0c 设置虚拟机 xff0c
  • Android系统深度游

    项目原因 xff0c 让我们必须深入探索Android系统 xff0c 完成对之前的我们来说比较艰巨的任务 这样 xff0c 我们开启了Android深度游 Android这个系统 xff0c 应用层开发还是比较舒服的 xff0c Goog