不知道如何看Android源码?试试这几种方式~

简介: Android这个是一个**庞大的系统性**的工程,各个版本都有一定兼容性问题,为了能快速定位问题,也为了学习Android框架中一些优秀的思想,时常需要查看Android系统源码层面的知识。

本文正在参加「金石计划 . 瓜分6万现金大奖」

🔥 Hi,我是小余。
本文已收录到 GitHub · Androider-Planet 中。这里有 Android 进阶成长知识体系,关注公众号 [小余的自习室] ,在成功的路上不迷路!

前言

随着谷歌对Android框架的越加深度的封装,包括各种JetPack框架的推出等都是为了让应用开发更加精简。 这样带来的直接影响就是Android门槛被拉低了,应用开发只需要一个Activity就能制作一个App,貌似也不需要什么高深的技能。

然而Android这个是一个庞大的系统性的工程,各个版本都有一定兼容性问题,为了能快速定位问题,也为了学习Android框架中一些优秀的思想,时常需要查看Android系统源码层面的知识。

本篇文章主要用来分享几个平时查看系统源码的方式

目录

1.本地查看源码

1.1 as关联源码

这种方式是最直接的方式,在as中就能搞定步骤1:下载指定版本的源码

![]()

步骤2:在As中使用快捷键直接查找

优点

  • 1.直接在as'中查看,下载到本地速度快。
  • 2.可以指定版本查看
  • 3.可以直接在源码中打断点调试

缺点

很多类会报红无法查看,如下:

IWindow是aidl的接口类无法查看,InputChannel是本api版本的类也无法查看还要重新搜索,且一些native方法或类更是无法查看 所以这个方式看起来很鸡肋,不推荐

1.2:使用编辑器查看

将源码下载到本地然后使用离线编辑器查看。 下载方式:这里以Linux下载方式为例

  • 1.初始环境搭建

    • 1.1安装git

      sudo apt-get install git
    • 1.2安装curl(上传和下载数据的工具).

      sudo apt-get install curl
    • 1.3接下来创建bin,并加入到PATH中。

      mkdir ~/bin
      PATH=~/bin:$PATH
    • 1.4下载repo并设置权限:

      curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
      chmod a+x ~/bin/repo
    • 1.5最后安装python,repo初始化时会用到:

      sudo apt-get install python

      重启虚拟机后,开始下载源码。

  • 2.源码下载

    • 2.1.建立工作目录 :

      mkdir aosp
      cd aosp
    • 2.2:repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里:

      export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
    • 2.3:设置身份,添加自己的邮箱和姓名:

      git config --global user.email "piratemorgen@gmail.com"
      git config --global user.name "piratemorgen"
    • 2.4:初始化仓库:

      repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

      初始化并指定版本:

      repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r8
    • 2.5:同步源码:

      repo sync

      源码下载完成后,看到下面的信息可以说明下载成功。整个源码的大小为36.5 g

      源码下载官方教程

  • 3.源码查看

查看源码的编辑器有:SourceInsightSublime Text等。

小余平时查看使用的是SourceInsight,虽然新版本需要license了,网上也有科学使用方式,好用别忘记给小余点个赞哦。

全局搜索方式:这可以搜索到源码中所有相关的信息。

优点

  • 1.可以全局搜索关键字以及高亮显示等。
  • 2.左边类属性栏可以根据关键字定位到对应的属性或者方法
  • 3.可以使用快捷键快捷跳转到前一个和后一个查看位置
  • 4.可以查看native方法代码

缺点

  • 1.由于Android包体积较大,第一次加载会比较慢
  • 2.不能够点击类或者方法自动跳转

这个方式基本可以满足日常查看源码使用。

2.在线查看源码

方式1:Android Ref

Android Ref这个大家应该都比较清楚了,国内很经典的一个在线查看网站。

可以看到目前网站最新的版本是9.0的源码。

优点

  • 1.支持全局搜索,支持在线跳转,且类和属性,方法使用不同颜色标注

缺点

  • 1.支持查看最新9.0的源码。想看9.0以后的就要另辟蹊径了
  • 2.国外网站,国内也能访问,但是速度较慢,需要科学上网

方式2:Android中文社区

Android中文社区是国内网站,

源码版本10.0还算比较新了,且列出了源码的目录结构,还附带一些简单的说明,适合刚接触源码的同学快速厘清各个目录模块的大致功能缺点就是不能智能跳转,且可查看版本在10以下

方式3:谷歌官网

网址:https://cs.android.com/

从网站首页可以看出,其不仅支持Android源码还支持查看AndroidX以及AndroidStudio源码,真是集大成啊。

我们点击进入Android模块看看:

可以看到这里面包括了aosp源码以及kernel源码。 我们知道Android源码包括aosp和kernel两部分,谷歌官方直接给我们备齐了。

进入aosp:

这里面有最新的Android13的源码,以及13以下的所有版本,你可以选择自己希望看的源码版本哦、

下面我们来搜索Activity类为例子

可以看到左半部分有类的所有属性以及方法,而中间部分点击某个类会自动跳转哦。

优点显而易见:支持全局搜索以及对类以及属性方法等使用不同类标注,且支持自动跳转,这个体验和在Android Studio中几乎没差异,且代码是实时更新的,不必担心和前面几个网站一样代码过时。 真是谷歌出品必属精品。唯一缺点就是这个网站是国外的,需要科学上网才能访问

总结:

上面列举了我们常用的几种源码查看方式,各有各的优势及缺点

个人推荐

  • 1.会科学上网的,推荐使用谷歌官方查看网站在线查看:https://cs.android.com/
  • 2.不会科学上网的且对源码版本要求不是很高的推荐:Android Ref
  • 3.初学者可以考虑Android中文社区https://www.androidos.net.cn/sourcecode
  • 4.如果想不用网络且速度快,建议将代码下载到本地,使用SourceInsight查看

以上就是小余对Android源码查看几种理解,如果你有更好的方式,欢迎评论区分享,感谢。

如果以上文章对您有一点点帮助,希望您不要吝啬的点个赞加个关注, 您每一次小小的举动都是我坚持写作的不懈动力!ღ( ´・ᴗ・` )

参考:
http://liuwangshu.cn/framework/aosp/2-download-aosp.html

相关文章
|
6月前
|
开发工具 Android开发 git
Windows下载android2.2完整源码(转)
Windows下载android2.2完整源码(转)
81 3
|
3月前
|
Ubuntu 开发工具 Android开发
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
本文介绍了在基于Ubuntu 22.04的环境下配置Python 3.9、安装repo工具、下载和同步AOSP源码包以及处理repo同步错误的详细步骤。
190 0
Repo下载AOSP源码:基于ubuntu22.04 环境配置,android-12.0.0_r32
|
6月前
|
Java 开发工具 Android开发
如何在Eclipse中查看Android源码或者第三方组件包源码(转)
如何在Eclipse中查看Android源码或者第三方组件包源码(转)
51 4
|
6月前
|
Java Android开发
Android12 双击power键启动相机源码解析
Android12 双击power键启动相机源码解析
179 0
|
3月前
|
开发工具 git 索引
repo sync 更新源码 android-12.0.0_r34, fatal: 不能重置索引文件至版本 ‘v2.27^0‘。
本文描述了在更新AOSP 12源码时遇到的repo同步错误,并提供了通过手动git pull更新repo工具来解决这一问题的方法。
112 1
|
3月前
|
Android开发 Docker 容器
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
431 1
|
3月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
335 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
3月前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
103 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
3月前
|
Android开发
我的Android 进阶修炼(1): AOSP源码根目录结构
本文介绍了AOSP源码的根目录结构,提供了基于MTK9269 Android 9.0源码的目录说明,帮助读者了解AOSP源码的组织方式和各目录的功能。
139 0
我的Android 进阶修炼(1): AOSP源码根目录结构
|
3月前
|
API 开发工具 Android开发
Android源码下载
Android源码下载
384 0