概述
怎样读Android源码
这个问题是比较个性化的,因为不同的人从事着不同的工作,有的人从事应用开发,可能对Java层东西感兴趣;有的人从事Framework开发,可能对Framework层感兴趣;有的从事硬件开发,可能对底层实现感兴趣。
这个都因人而异,但是有一点,不能盲目地毫无目的地看源码,因为这样的话最终你会淹没在AOSP的大海里,看了一年半截啥都看了,却又感觉都没看透,别人问你源码的东西,都能说个一二,但是一往深了说,就不知所以了。
所以对于AOSP源码,不在于多,而在于精,你不要试图把所有的源码都看懂,你只要对自己感兴趣的那部分深入研究就可以,因为即便是Google工程师也不可能把AOSP全部读完。
--摘自以下博客
Android的源码结构
- 第一层:应用程序层(applications)对应根目录下platform/packages/apps
- 第二层:应用程序框架层(application framework)对应根目录下的platform/frameworks
- 第三层:运行库层包括运行库(libraries)和android运行时环境(android runtime)
- libraries对应目录很多,其中libc库对应的是platform/bionic
- android运行时环境,Core Libraries 对应根目录下的platform/libcore,Dalvik Virtual Machine 对应根目录下的platform/dalvik ,不过现在已经是ART了,所以目录是platform/art
- 第四层:Linux内核层对应根目录下的kernel,每一个目录对应了一个kernel的版本,因为Android要兼容各种芯片,我们主要看的有两个,一是goldfish,这是模拟器用的内核,一是msm,这个是高通的内核。
--摘自以下博客
翻github的时候翻到两篇关于源码不错的博客:
如何下载Android代码:
https://github.com/foxleezh/AOSP/issues/1
如何阅读Android代码:
https://github.com/foxleezh/AOSP/issues/2
查看Android目录结构及源码网站:
http://androidxref.com
上层APP源码下载
我们以Browser2应用为例,根据自己需要下载的应用更换。
官方下载地址:https://android.googlesource.com/platform/packages/apps/Browser2,由于墙的原因,我们得替换成国内的镜像网站:https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Browser2
我们通过git版本控制工具下载:
git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Browser2
$ git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Browser2
Cloning into 'Browser2'...
remote: Counting objects: 607, done.
remote: Compressing objects: 100% (582/582), done.
remote: Total 607 (delta 180), reused 0 (delta 0)
Receiving objects: 100% (607/607), 190.73 KiB | 0 bytes/s, done.
Resolving deltas: 100% (180/180), done.
apps路径
Android Studio打开
因为下载下来的系统应用为 module类型,所以我们先自建一个工程,再Import Module 将系统应用APP导入到工程中,运行APP就OK了。
现在都是Gradle控制APP的版本信息,将AndroidManifest.xml中的版本删除
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />
运行成功
总结
研究系统APP源码或者在开发跟系统APP类似的APP时,我们可以将系统的顶层APP的源码下载下来运行一下,通过Android Studio 可以更加方便的查看源码。
网友评论