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

227 篇文章 24 订阅
订阅专栏
49 篇文章 1 订阅
订阅专栏
2 篇文章 0 订阅
订阅专栏

前言

随着谷歌对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的源码。 ​ [图片上传失败…(image-e156fb-1672295725000)]

优点

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

缺点

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

Android中文社区是国内网站,

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

方式3:谷歌官网

网址: cs.android.com/

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

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

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

进入aosp:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-spwZMRHE-1672296002561)(https://upload-images.jianshu.io/upload_images/25149744-e26faf6f9f7b2b30.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

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

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

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

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

总结:

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

个人推荐

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

作者:小余的自习室
链接:https://juejin.cn/post/7176591422529732645

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
在这里插入图片描述
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

全套视频资料:

一、面试合集
在这里插入图片描述
二、源码解析合集

在这里插入图片描述
三、开源框架合集

在这里插入图片描述
欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓

如何去看源代码
tof
06-03 632
1.看源代码就像看文章一样,要有清晰的结构和条例,就像一本书一样,化好了章节,目录,这样你才能了解全局,知道如何看,该看那些2.首先要了解代码的原理和关系(必须核心关系类图)3.包含代码的框架是怎样的运行的原理,画出简洁的设计图,图在纸上,也在心中4.对于代码,不是处处要看,每个方法要看,要找到自己该看什么,就像文章的条例一样,抓住核心部分
大神如何阅读源码
laokdidiao的专栏
05-14 9788
以下是我搜集的各种方法,我将一一尝试,会根据尝试结果,做个总结,与大家一起分享: 1、腾讯IMWEB负责人说: 首先,搞清楚自己要读懂他们的原因和动机。 其次,可以先看下这些优秀框架或者库的设计文档和架构图,这样会让你宏观上对一些概念有些认识。  然后,从你最感兴趣的一个点,开始设置断点,跟进去看发生了哪些事情。 和架构设计哪一块是match的。 有人补充:最快,最易懂方法。
(免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套、毕设成品等 Django“万美丽”流浪动物救助系统26498
最新发布
weixin_bysj703的博客
09-02 2421
本文以Django为开发技术,实现了一个流浪动物救助系统。流浪动物救助系统的主要使用者分为用户、管理员;管理员功能包括有:首页、个人资料、公共管理(轮播图、系统公告)用户管理(管理员、领养用户)信息管理(宠物资讯、资讯分类)领养中心、宠物类型、领养申请、宠物信息、收容捐赠;前台首页功能包括有:首页、系统公告、宠物资讯、个人账户、个人收藏、领养中心、宠物信息等功能。通过这些功能模块的设计,基本上实现了整个流浪动物救助系统的过程。
偷偷跟我学这个看源码的小技巧,早日解放双手
wdjnb的博客
05-09 417
大家好! 我在之前的文章里面不是经常叫大家拉源码,然后看代码提交记录吗。 也就是看类似于这个界面: ​比如上面这个界面中,就可以看到 RedissonBaseLock.java 这个文件,由谁在什么时候进行过变更,以及变更对应的 commit 信息是什么。 这样就能很直观的看到文件的演变过程。 那么问题就来了,有好几个同学都问过我这个问题:怎么在 idea 里面查看 git 提交记录呢?这个界面是藏在哪里的呢,我的 idea 里面怎么没有呢? 好的,是我疏忽了,我先入为主的认为这个大家应
为什么要读源代码,如何阅读源代码
weixin_30535167的博客
04-30 1070
由于项目的需求,最近花了较多的时间来看开源项目的代码,在本文中,简单总结一下对为什么要看源码、如何看源码这两个问题的思考。 本文地址:https://www.cnblogs.com/xybaby/p/10794700.html 看源码的意义 看源码只是一种方法、手段,而不是目的。我也曾经给自己制定过“阅读xxx源码”的目标,现在看起来真的很蠢,一点不smart(specific、measurab...
如何看源码
sinat_31608641的博客
09-02 2181
一、准备工作 看源码之前,要有 1、扎实的基础:源码之所以为源码,是因为其内部都是一些高阶写法。它会以最简洁、最优化、最全面的方式来实现功能,而不像普通开发者实现功能都是用最基本的写法堆积而成。而且源码具备高度的封装性,有时候一个方法,可以在多种场景下使用,并且需要考虑多种异常情况,所以源码内部会有各种判断和抛错。在研究源码前,一定要提升一下基本功。否则将会寸步难行,这里看不懂,那里也看不懂。最后导致心态崩溃,看不下去,只得半途而废。 2、心理建设:源码难懂是一定的,首先要认清这个客观事实。但是凡事一
如何阅读源码
NRatel的博客
06-06 1108
最近打算再看一遍UGUI源码。发现还是有些茫然无绪。 在突然面对大量 官方源码/他人代码 时,大多数人恐怕都是这样。 探究 “如何科学地阅读源码?” 是有意义的! 零、准备。 1、明确自己阅读源码的原因。能解决自己的问题即可。 2、戒急戒躁,做好长期阅读的准备。 3、黑盒体验,重度使用、熟读文档。明白系统需求、痛点、重点、难点。 4、做好笔记、总结。可以纳入版本管理,长期注解保存。 5、疑问点可以自己动手实例验证、调试。 一、从整体出发 1、看类设计 ①、 利用 VS的 类..
知道怎么提高代码可扩展性?来看看优秀框架源码中的这几种设计模式吧!
dennis_jiang的博客
05-29 1418
为什么要提高代码扩展性 我们写的代码都是为了一定的需求服务的,但是这些需求并不是一成不变的,当需求变更了,如果我们代码的扩展性很好,我们可能只需要简单的添加或者删除模块就行了,如果扩展性不好,可能所有代码都需要重写,那就是一场灾难了,所以提高代码的扩展性是势在必行的。怎样才算有好的扩展性呢?好的扩展性应该具备以下特征: 需求变更时,代码不需要重写。 局部代码的修改不会引起大规模的改动。有时候我们去重构一小块代码,但是发现他跟其他代码都是杂糅在一起的,里面各种耦合,一件事情拆在几个地方做,要想改这一小块必
testbess_解码源码加密_试试_
10-03
在“testbess.c”这个源码文件中,我们可以期待找到以下几个关键部分: 1. **密钥设置**:这部分代码将接收用户提供的加密密钥,并初始化RC4的状态数组S。状态数组通常是一个256字节的表,每个元素都是一个0到256...
你真的熟练运用 HTML5 了吗,这10 个酷炫的 H5 特性你会几个?
热门推荐
努力是为了站在万人之中,成为别人的光
07-05 26万+
HTML5不是什么新鲜事。自初始版本(2008 年 1 月)以来,我们一直在使用它的几个功能。我再次仔细查看了 HTML5 功能列表。看看我发现了什么?到目前为止,我还没有真正使用过很多! 在本文中,我列出了 10 个这样的HTML5功能,这些功能过去我用得不多,但现在发现它们很有用。我还创建了一个工作示例流程并托管在Netlify. 希望你也觉得它有用。让我们开始了解有关它们中的每一个的解释、代码和快速提示。 https://wanghao221.github.io/html-tips-tricks/
小游戏源码-关于中秋节,你了解多少,一起来试试吧?.rar
09-16
在这款小游戏的源码中,我们可以深入学习以下几个方面的知识点: 1. **编程语言**:首先,我们要确定游戏使用的编程语言。可能是常见的如JavaScript、Python或C++等,不同的语言有其特定的语法和特性,这决定了游戏...
Service有几种启动方式?看这一篇就够了!
m0_57065039的博客
05-26 432
面试了一位工作12年的程序员, 这位老哥有3年java开发经验,2年H5,7年Android开发经验,简历上写着精通Java,Android,熟悉H5开发。没有具体的技术点。 说实话我很期待这位老哥的面试,于是让人事邀约了他。 老哥面试的气场很足,我也很尊敬他,一大波的自我介绍之后,我们进入了正题。 我问了他Jetpack,他说几乎没用过Jetpack,于是我给他举了个小例子,老哥给我的答案是百度可以解决。 于是我又问了他Groovy,老哥还是说不清楚,于是我问了最基础的Handler,Binder等几个关
今天我们就来讲讲怎么看源码
sincegc的博客
08-30 455
这篇文章我们就来讲一讲为什么要看源码,怎么看源码 为什么看源码 面试 随便一个面试无论大小,是不是都会遇到给我讲一下HashMap、ArrayList、ConcurrentHashMap的原理,那么如果你不自己看源码,而是随便从网上看看分析文章,很难体会到其中的奥妙。 设计 很多时候你在自己开发,可能会遇到一些设计问题,绞尽脑汁,也查阅了很多设计模式的入门文章,但是就是不知道怎么设...
源码如何阅读?
ZCC的专栏
06-22 1435
一、昨夜西风凋碧树,独上高楼,望尽天涯路 想把源码搞懂,吃透,首先得登高望远,瞰察路径,明确目标与方向,了解源码的概貌。所以有些准备工作必须得做。阅读源码之前,需要有一定的技术储备。 (1)比如设计模式,在很多Java源码中几乎就是标配,尤其是这几个:模板方法,单例,观察者,工厂方法,代理,策略,装饰者。 (2)再比如阅读Spring源码,肯定得先了解IoC是怎么回事,AOP的实现方式,CG...
如何阅读源码
about云
03-14 3653
问题导读1.阅读源码不同的情况该如何阅读源码?2.如果为了面试,该如何快速懂得源码?3.阅读源码的难点在什么地方?为何要阅读源码?可能原因如下:1.面试要求2.提升编码能力在面试中,我们经...
怎么看源代码?
Docker的专栏
04-04 1324
今天想跟大家分享下,作为技术Leader,要懂得研究和引入技术,引入的前提一定是要Hold住。怎么才叫Hold住呢?就是能精通使用它,能够深入了解它的架构、原理,能够剖析它的核心源代码。以研究Nacos为例,这次我分享下研究技术的方法,授之以渔,希望大家有所收获,当然也欢迎留言共同讨论更好的技巧。—1—官方文档,搭建demo使用很多人喜欢买书看,看别人的博客,其实都是...
206套成品网站源码打包下载
此资源包括了asp、php、asp.net和jsp这四种常见的服务器端脚本语言的源码。 1. ASP (Active Server Pages):ASP是微软推出的一种服务器端脚本环境,主要用于创建动态交互式网页。它允许开发者使用HTML、VBScript或...
写文章

热门文章

  • 【Android】全网最详细的Android入门基础教程,零基础速领 14831
  • Android中高级开发进阶必备资料(附:PDF+视频+源码笔记) 14650
  • 什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战 9884
  • 盘点2021Android框架百大排行榜 附:《Android百大框架源码解析》 9605
  • 8万字205道Android经典面试题总结(附参考答案),经典好文 8501

分类专栏

  • 面试必问 93篇
  • 面试 159篇
  • Android 227篇
  • 移动开发 134篇
  • Jetpack 6篇
  • 进阶学习 49篇
  • Framework 12篇
  • Android开发 28篇
  • 性能优化 15篇
  • 架构 2篇
  • 应届生 3篇
  • Android笔记 6篇
  • 学习路线 7篇
  • 音视频 8篇
  • flutter 11篇
  • JAVA 2篇
  • 源码解析 6篇
  • Android逆向 2篇
  • 安全 1篇
  • 车载 4篇
  • kotlin 11篇
  • 源码 4篇
  • Android jetpack 6篇
  • 程序员
  • 高薪程序员 4篇
  • 学习 2篇
  • 经验分享 1篇
  • 校招 1篇
  • 设计模式
  • 跳槽
  • 热修复
  • 笔记
  • 后端

最新评论

  • 一文说清大模型RAG应用中的两种高级检索模式:你还只知道向量检索吗?

    CSDN-Ada助手: 不知道 Python入门 技能树是否可以帮到你:https://edu.csdn.net/skill/python?utm_source=AI_act_python

  • 什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战

    m0_74939679: 一定要持续学习啊啊啊啊

  • Android 应用获取用户位置

    m0_67437491: 小米手机采用谷歌服务定位 即使翻墙经常拿不到定位是啥情况

  • 2022最全面&详细的Android学习指南,零基础快速入门的通道

    m0_73688628: 点击哪个卡片

  • 什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战

    mumu594: 懂安卓逆向破解的大神联系我,月薪5-10万,有能力的话待遇什么都好说

大家在看

  • 2024最好用的29精简网课源码安装教程(无需数据库)
  • JVM 实战篇(一万字) 181
  • python+flask框架的大学校园宿舍微信报修小程序小程序 38(开题+程序+论文) 计算机毕业设计
  • 基于springboot的在线考试与学习交流网页
  • 基于yolov5的手机屏幕缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】 303

最新文章

  • AI产品经理薪资30k起步?0基础可以转行AI产品吗?
  • 三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
  • 大妈招入赘女婿:送房送车,不要彩礼,但必须是阿里云大模型的程序员!!
2024
10月 27篇
09月 36篇
08月 43篇
07月 37篇
06月 5篇
05月 18篇
04月 22篇
03月 18篇
02月 10篇
01月 16篇
2023年223篇
2022年148篇
2021年57篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司临邑网站优化广州网站营销seo优化关键词网站优化哪家值得信赖沾益区网站seo优化排名wdcp网站性能优化三水网站优化技巧海口seo外包优化网站凉山做优化网站多少钱机械行业网站优化怎么去做长丰手机网站优化推推蛙企业网站优化郑州百度seo网站优化技术淮北网站优化选哪家好亳州做网站优化哪家有实力望江网站优化哪家有名沈阳网站长尾关键词优化应城市网站做优化价格网站排名优化太首选金手指七河北电子网站优化大全务川网站优化公司专业网站优化培训优化网站页面表述沈河区网站建设优化价格云南网站优化哪家专业无锡企业网站排名优化三都网站关键词优化网站排名优化桨云速捷极度黄冈外包网站优化怎么做义马优化网站建设邵阳网站权重优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化