| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> (连载)Android 8,成为一名合格Android架构师 -> 正文阅读 |
|
[移动开发](连载)Android 8,成为一名合格Android架构师 |
官方文档 ,只要按照上面一步步做就可以了,但是由于需要翻墙,国内无法直接访问,而整个Android项目源码巨大,即便是翻墙后下载也很慢,所以还是使用国内镜像比较好。 我推荐清华大学开源镜像,地址 ,这上面也是有完整的教程,我就不复制粘贴了,但是有一点要注意,你一定要备一个比较大的磁盘,至少60个G吧,还不算后期编译的。 我们分析源码其实是不需要全部代码的,因为AOSP不仅包括系统源码,还有些工具代码,如aapt,adb等,这些我们根本不需要,而且即便是系统源码,也不是所有我们都需要看,如果真的全部看,你这辈子都看不完,所以我还是推荐大家单个下载。 1.2 单个下载官方地址 ,比如我们要下载platform/frameworks/base/目录下的代码,我们可以git clone https://android.googlesource.com/platform/frameworks/base ,不过这个还是会遇到翻墙的问题,当然我们也可以用镜像。 镜像地址 ,比如我们要下载platform/frameworks/base/目录,就用git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base ,如果你带宽够的话,一般几分钟就可以下载好你想要的单个源码了。 如果你想下载单个文件,或者搜索文件名及代码,可以访问 http://androidxref.com/ ,这里有部分Android的源码 1.3 AOSP目录结构先上一张图,整个Android项目的架构图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qMvurXGe-1630318106745)(https://user-gold-cdn.xitu.io/2017/10/22/2a01f36d8e89311aea19ff5e849b1334?imageView2/0/w/1280/h/960/ignore-error/1)] 我们都知道Android系统从上到下大致分为这四层,所以我们以这四层为基础,讲解下AOSP的目录结构:
目前我下载的目录如下: git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Launcher2 二、如何阅读AOSP当我们把源码下载下来之后,会感到茫然无措,因为AOSP的源码实在是太多了,这里我们需要明确一些问题:
下面我将从这三个问题一一展开 2.1 要阅读哪些源码这个问题是比较个性化的,因为不同的人从事着不同的工作,有的人从事应用开发,可能对Java层东西感兴趣;有的人从事Framework开发,可能对Framework层感兴趣;有的从事硬件开发,可能对底层实现感兴趣。 这个都因人而异,但是有一点,不能盲目地毫无目的地看源码,因为这样的话最终你会淹没在AOSP的大海里,看了一年半截啥都看了,却又感觉都没看透,别人问你源码的东西,都能说个一二,但是一往深了说,就不知所以了。 所以对于AOSP源码,不在于多,而在于精,你不要试图把所有的源码都看懂,你只要对自己感兴趣的那部分深入研究就可以,因为即便是Google工程师也不可能把AOSP全部读完。 对于我而言,我是从事应用层开发的,我主要会了解以下几个方面的源码:
2.2 阅读源码的顺序和方式2.2.1 阅读顺序读源码是一个日积月累的过程,不可能一蹴而就,当我们列出自己感兴趣的源码后,我们需要制定一个阅读计划,先读什么再读什么。这个也是因人而异,根据自己的兴趣来就是,你最想读什么,那就排前面。 我一直在说兴趣,因为兴趣是最好的老师,只有你对一样东西感兴趣了,才会有动力去学,去研究,才会不觉得累,如果一开始就去啃一些你不感兴趣的东西,到头来也是乏味不专注的,理解的程度也是不深,而且很有可能失去信心,最后放弃阅读。 当然,如果你对好几样东西都感兴趣,那就有一些原则了:
2.2.2 阅读方式Android系统涵盖的范围很广,从上层的应用程序,到Framework,再到Libraries以至硬件,从Java层到C++,就像一座几十层的大厦一样,每层都有楼梯,也有电梯,我们需要做的就是在大厦里上下穿梭。 当我们阅读某一个知识点源码的时候,不同的知识点有不同的阅读方式,有些适合从下往上读,比如系统启动流程,我是从事件开始的地方开始读,从init.cpp开始,然后到zygote进程,到Java虚拟机,最后到Luncher; 有些适合从上往下读,比如Activity的启动,我是从startActivity方法开始读,然后到ActivityThread,然后到ActivityManagerService; 有些适合两头从中间读,比如Binder,我是从Java层看到C++层,但是看到驱动那儿看不动了,然后就从接收Binder的地方往回看,最后在两端集中在驱动的地方前后对比,才将Binder看通。 这里还是有个好的方式,就是从事件触发的地方开始看是比较合适的。 2.3 用什么工具来阅读Android 源码阅读神器当然是Source Insight [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DUCopZQF-1630318106747)(https://user-gold-cdn.xitu.io/2017/10/22/a019c246abe07588b268a6cd5121abe4?imageView2/0/w/1280/h/960/ignore-error/1)] Source Insight的好处:
下面我讲讲如何使用Source Insight 2.3.1 下载安装Source Insight下载地址 http://download.csdn.net/download/foxlee1991/9882553 ,我还专门配置了一个跟Android Studio一样的Darcula主题,下载地址 http://download.csdn.net/download/foxlee1991/9882535 2.3.2 导入AOSP源码我目前还没有下载完整的AOSP源码,只是先下载了几个重要的源码。打开Source Insight,选择Project -> New Project,取个名字比如叫AOSP,点击OK [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mP0EjdUb-1630318106748)(https://user-gold-cdn.xitu.io/2017/10/22/20c7c0c82f101c3cb4774520d1c00f12?imageView2/0/w/1280/h/960/ignore-error/1)] 选择你要查看的源码目录,点击OK [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GS8BO7i6-1630318106749)(https://user-gold-cdn.xitu.io/2017/10/22/31cc58c01f677c51031112fa153443a7?imageView2/0/w/1280/h/960/ignore-error/1)] 选择需要将哪些目录下的源码导入,点击Add Tree [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oETqZCM8-1630318106750)(https://user-gold-cdn.xitu.io/2017/10/22/ec0b3797043ae23c16130d54699bc63a?imageView2/0/w/1280/h/960/ignore-error/1)] 导入成功后会有很多文件列在下方,点击Close [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dzlp0suk-1630318106751)(https://user-gold-cdn.xitu.io/2017/10/22/ac5852168aeced2ce3f1336b162d1c6d?imageView2/0/w/1280/h/960/ignore-error/1)] 2.3.3查看源码Add Tree [外链图片转存中…(img-oETqZCM8-1630318106750)] 导入成功后会有很多文件列在下方,点击Close [外链图片转存中…(img-Dzlp0suk-1630318106751)] 2.3.3查看源码 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/31 5:40:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |