diff --git a/chapter-01/README.md b/chapter-01/README.md index a55c676..dabd200 100644 --- a/chapter-01/README.md +++ b/chapter-01/README.md @@ -2,6 +2,8 @@ ## 1.1 AOSP是什么 +​ Android操作系统是如今最流行使用最广的智能手机操作系统,它的发展受到广大厂商和用户的全力支持,而Android操作系统的开源使它可以被任何人定制化,得以满足各类厂商和不同需求的用户。 + ​ AOSP的全称是“Android Open Source Project”,也就是安卓开源项目。由谷歌发起的移动设备的操作系统。任何人都可以自由的获取到完整的项目源码,以及提交更新完善项目,同时,谷歌也会不断的迭代更新版本。 ​ 由于Android的开源,各大手机厂商能能够自由的定制系统的源码,适配自己的硬件,由此衍生出了各种产品。我们常见的国产安卓设备的系统,基本厂商开发团队基于AOSP源码不断进行改造和优化的结果,例如小米MIUI系统、华为Harmony的系统、一加的H2OS系统等等,大多数都是基于AOSP的源码修改而来。如今的Android能够百花齐放,占据手机市场的半壁江山,也是主要得益于AOSP的开源。 @@ -43,13 +45,13 @@ adb pull /sdcard/framework.jar ./ ![jadx_framework](images/jadx_framework.png) -5. **Native Libraries**。字面意思,C/C++库的原生支持库,比如比较典型的libc、ssl、opengl等等。 +5. **Native Libraries**。字面意思,C/C++的常用库的支持,比如比较典型的libc、ssl、OpenGL、WebKit等等。为我们开发大大的提高了效率和性能。避免了我们每次用到都需要自己去找工具库。 -6. **Android Runtime**。安卓的运行时库,安卓中最核心的ART虚拟机就是在这个部分。虽然android开发常常使用的是java,但是android开发的应用并不是运行在JVM虚拟机中,而是类似的针对dex结构的Dalvik虚拟机和ART虚拟机。在android4.4之后,逐渐使用ART虚拟机全面替代了Dalvik虚拟机。 +6. **Android Runtime**。缩写就是ART,是Android5.0中的使用的新技术,替换了以前的Dalvik虚拟机运行环境。虽然android开发常常使用的是java,但是android开发的应用并不是运行在JVM虚拟机中,而是类似的针对dex结构的Dalvik虚拟机和ART虚拟机。在android4.4开始测试ART功能,随后逐渐使用ART虚拟机全面替代了Dalvik虚拟机。ART使用了更高效的代码编译技术Ahead-of-Time,简称AOT编译。大致就是在安装应用时,将程序代码编译成可执行的机器码,而在运行时不再需要编译。由此提高了应用的运行效率,极大的提高用户体验。 -7. **HAL硬件抽象层**。主要作用于系统内核与硬件之间的接口,具有提供给硬件供应商实现的标准接口。往往用来做硬件的驱动程序开发。也有个说法是因为硬件供应商不愿意自身的驱动放在内核中被一起开源。所以单独抽出了HAL层来对接硬件驱动。 +7. **HAL硬件抽象层**。主要作用于系统内核与硬件之间的接口,是Android系统底层的部分,具有提供给硬件供应商实现的标准接口,Android系统通过接口访问硬件设备,也就是硬件的驱动程序开发,因此Android操作系统能够与各类硬件设备进行交互,不用关心底层硬件的处理。也有个说法是因为硬件供应商不愿意自身的驱动放在内核中被一起开源。所以单独抽出了HAL层来对接硬件驱动。 -8. **Linux内核**。系统的最重要的核心部分,内核负责与设备底层的硬件进行交互。比如显示驱动、音频驱动、WIFI驱动、电源驱动、内存管理、进程管理等等。 +8. **Linux内核**。系统的最重要的核心部分,内核负责与设备底层的硬件进行交互。比如显示驱动、音频驱动、WIFI驱动、电源驱动、内存管理、进程管理,网络通信等等,内核相当于一个操作系统的灵魂。 ## 1.2 系统开发,定制,刷机,改机分别是什么 @@ -62,10 +64,14 @@ adb pull /sdcard/framework.jar ./ ​ 非常常见的一个场景就是,AOSP是谷歌开源的系统,而谷歌的开发者并不一定了解其他国家的国情,用户的习惯。那么国内的厂商进行系统开发扩展功能,就需要考虑到国内用户体验,对界面,操作方式,系统服务等一些功能进行开发。 -### 1.2.2 系统定制 +​ 这里主要是对Android系统的底层原有的代码进行修改定制化,调整系统的部分框架和核心代码来实现新的功能,例如硬件的驱动支持,优化系统的性能,实现开发者自己的系统结构。 + +### 1.2.2 定制 ​ 系统定制也是属于系统开发的一种,属于轻量级的改动。往往不会对系统进行太大的变动。比如下面的场景。系统就像是一个沙箱,而我们开发的应用是在沙箱中运作的小盒子。而我们需要对应用进行分析和观测时,可以通过修改小盒子运行流程时对系统相关的调用,来分析应用执行的各种状态。只要我们对android系统有足够的了解,就可以像开了上帝视角一般,对普通应用进行跨维度的分析。 +​ 这里主要就是轻量级的定制,比如对系统的预装应用进行修改,优化桌面的结构,预装系统权限app,替换系统默认应用,修改配置等等。 + ### 1.2.3 刷机 ​ 在最早先的Android版本界面非常简陋,而且功能并不是那么完善,随着各大第三方团队的加入,非官方ROM越来越多,而官方原版ROM长久使用后越来越卡,善于折腾的手机用户就开始尝试使用功能相对完善,界面漂亮,性能更好的第三方ROM。更换ROM的过程就叫做刷机。当然我们并不是直接刷第三方提供的ROM包,而是自己编译一个ROM,再刷入手机。 @@ -109,7 +115,7 @@ adb pull /sdcard/framework.jar ./ ​ 官网:https://www.mokeedev.com/ -​ 中文名魔趣,。发起于2012年12月12日,是国内最大的第三方非盈利性开源ROM,适配了大量国内主流机型,高达近300种。主要针对的用户群体也是国内群众,所以在功能和操作方面非常贴切国人的使用习惯,同时简单纯净,性能出众,所以有些人会使用魔趣作为日常用的手机。下面是魔趣支持的手机厂商, +​ 中文名魔趣,。发起于2012年12月12日,是国内最大的第三方非盈利性开源ROM,适配了大量国内主流机型,高达近300种。魔趣是由一群热爱Android开源社区的热心志愿者维护,他们致力于为用户提供最新、最安全、最稳定的定制Android系统,主要针对的用户群体也是国内群众,所以在功能和操作方面非常贴切国人的使用习惯,同时简单纯净,性能出众,所以有些人会使用魔趣作为日常用的手机。下面是魔趣支持的手机厂商, | ARK | 华硕 | Essential | 谷歌 | | :--: | :--: | :-------: | :--: | @@ -127,7 +133,7 @@ adb pull /sdcard/framework.jar ./ ​ 官网:https://download.pixelexperience.org/ -​ 这是最接近原生Android系统的第三方ROM,,我们正常编译出来的AOSP刷入后是没有谷歌插件,并且界面UI都是非常简陋的。如果你想要打造一个和原生Android非常相似的ROM,那么完全可以选择它,原生Android的界面风格以及自带谷歌套装,以及适配了更多的手机厂商。下面是它所支持的各大厂商。 +​ 这是最接近原生Android系统的第三方ROM,它是在Google Pixel系列设备发布的,拥有着Pixel系列设备的原生外观和功能,并且添加了更多可定制的功能。它提供了Gestures、Substratum、EDXposed等特殊应用,这些应用让用户可以轻松的定制自己的Android设备,它还预装了谷歌插件,并且还提供了大量可定制的主题,以及强大的安全性功能。而我们正常编译出来的AOSP刷入后是没有谷歌插件,并且界面UI都是非常简陋的。如果你想要打造一个和原生Android非常相似的ROM,那么完全可以选择它,原生Android的界面风格以及自带谷歌套装,以及适配了更多的手机厂商。下面是它所支持的各大厂商。 | ASUS | Google | Lenovo | Motorola | | :----: | :-----: | :------: | :------: | @@ -141,7 +147,7 @@ adb pull /sdcard/framework.jar ./ ​ 官网:https://www.lineageos.org/ -​ LineageOS的前身是大名鼎鼎的CyanogenMod,简称CM,这个开发团队是全球最大的Android第三方编译团队。早在Android1.6版本时,就为很多手机厂商定制出稳定的ROM。2016年12月Cyanogen公司宣布停止开发并关闭项目,随后复刻后更名为LineageOS由原团队继续研发。 LineageOS的风格同样是类似原生Android的,但是相比起PixelExperience要更加的精简,运行起来也是非常流畅,同样适配各大厂商机型。下面是它所支持的各大厂商。 +​ LineageOS的前身是大名鼎鼎的CyanogenMod,简称CM,这个开发团队是全球最大的Android第三方编译团队。早在Android1.6版本时,就为很多手机厂商定制出稳定的ROM。2016年12月Cyanogen公司宣布停止开发并关闭项目,随后复刻后更名为LineageOS由原团队继续研发。 LineageOS的风格同样是类似原生Android的,但是相比起PixelExperience要更加的精简,运行起来也是非常流畅,同样也是非常纯净不会携带任何第三方应用,并且具有高度的安全性,可以在经过认证的设备上使用,能防止恶意软件攻击或病毒感染,也有着定制功能,允许用户自己定制操作系统,适配各大厂商机型。下面是它所支持的各大厂商。 | ASUS | BQ | Dynalink | Essential | | :-------: | :-----: | :------: | :-------: | @@ -167,21 +173,23 @@ adb pull /sdcard/framework.jar ./ 3、同时我们也可以自己打造喜欢的日常用机。为自己DIY一些提供便利的小功能,或者打造自己专用的工具手机。 +4、可以有效的控制操作系统的体积,更好的提升产品的性能和效率。 + ### 1.5.2 系统定制的缺点 ​ 定制的优势有的时候同样也代表着缺点,杀鸡用牛刀可以非常形象的形容我们定制ROM来干的事情。因为有很多时候,一些需求并不需要修改ROM,就能用其他方案轻松做到的,下面简单的总结几个缺点。 1、学习难度大,刚开始的阶段,搭建编译ROM的环境就较为麻烦,再加上庞大的源代码,复杂的结构,所以很容易劝退一些初学者。 -2、开发成本大,每次修改完代码都需要重新刷机,很多时候哪怕做一个小小的功能,你在测试的过程都在无限的重复编译刷机。 - -3、维护成本大,即使是一个成型的产品后续难免会有优化和更新,BUG是不可能没有的。而我们想要更新,只能选择全部重新刷机。 +2、开发成本大,每次修改完代码都需要重新刷机,很多时候哪怕做一个小小的功能,你在测试的过程都在无限的重复编译刷机。并且需要熟悉源码结构,必须深入理解Android系统以便于充分利用系统提供的API来制定出更加合理的定制方案, +3、维护成本大,即使是一个成型的产品后续难免会有优化和更新,BUG是不可能没有的。而我们想要更新,只能选择全部重新刷机,同样每次新的系统版本发布都需要重新定制和迁移,需要耗费大量的时间和精力。 +4、安全系数低,AOSP定制的系统安全性较低,所以定制的系统可能存在安全漏洞,导致定制系统比原生系统更容易受到攻击。 ### 1.5.3 系统定制的发展趋势 -​ + ### 1.6 初识系统刷机