Android-系统源码查看的几种方式

49 篇文章 41 订阅
订阅专栏

前言

系列文章:

Android 系统源码查看的几种方式
Android Studio关联Android SDK源码(Windows&Mac)

虽然说开局一个Activity,就能制作一个Android App,貌似也不需要其它特殊的技能。然而Android 是一个庞大的、系统性的工程,并且还有各种版本兼容问题。为了能够快速定位问题,也为了学习一些优秀的编码思想,经常需要定位到Android 系统源码里查看。
本篇文章主要分享一些常用的查看Android 系统源码的方式。
通过本篇文章,你将了解到:

1、本地查看源码的两种方式
2、在线查看源码的几种方式
3、总结

1、本地查看源码的两种方式

(一)Android Studio 关联源码

搜索方式

以Activity.java 为例,在Android Studio 里搜索源码:
image.png
可以看出,搜索到了Activity.java,该文件位于Android API 29的目录下(也就是对应Android 10源码)。
此种方式需要先下载对应版本的源码,然后关联到当前工程里。
具体操作方式请移步查看: Android Studio关联Android SDK源码(Windows&Mac)

优缺点

优点

1、因为是下载到本地,因此搜索速度快。
2、不用切换出Android Studio。
3、调试的时候还可以打断点。

缺点
比如搜索"Bitmap":
image.png
点进去查看源码,发现有native 方法:
image.png
image.png

再往下找,已经找不到"nativeCreate"方法对应的C/C++函数了。

再比如搜索"AMS":ActivityManagerService.java
image.png
我们知道IActivityManager.Stub 是依据AIDL自动生成的,但是却无法找到对应的AIDL文件。

(二)下载源码到本地

搜索方式

虽然Android Studio 可以下载并关联源码,但是其下载的源码包并不全,比如缺少JNI映射文件、缺少AIDL等文件。因此需要下载较为完整的源码到本地,此处以下载frameworks/base/core/目录为例:
image.png
图上标注出的core目录下的其中两个子目录:java 和jni。
在Android Studio 里只能看到java目录下的代码,而单独下载的frameworks包下包含了jni目录,继续来看Bitmap.cpp里的源码:
有java 方法与本地函数的映射:
image.png
可以看出nativeCreate 对应的底层函数是:Bitmap_creator:
image.png

注:此处看源码的工具是:“Sublime Text”。

优缺点

优点

相比Android Studio内置查看源码,下载到本地的源码比较全。

缺点

由于使用单独的工具来查看源码,因此源码之间的索引、关联跳转并不是很智能,比如Sublime Text 虽然能够建立"CTags",但是跳转并不像Android Studio那么精准。

下载源码请查看: 下载系统源码官方教程

2、在线查看源码的几种方式

前面两种查看源码的方式前提是下载源码到本地,而我们知道Android 系统源码繁复庞杂,占用本地空间,并且还涉及到不同版本的源码不同。若我们仅仅只查看源码并不修改编译源码,在线查看源码方式是比较符合我们的需求的。
接下来看看几种主流的在线查看源码方式:

(一)Android Ref

Android Ref 作为最经典的查看方式,经久不衰。
网址:http://androidxref.com/

网站首页:
image.png

可以看出,左侧列出了不同版本的系统源码索引,以Android 9为例:
image.png
依然以搜索Activity.java 为例,左边输入搜索目标,右边指定在哪个目录内搜索,如果不确定是哪个目录,可以选择"select all" 全部目录。

搜索结果如下:
image.png
点进去查看具体内容:
image.png
可以看到,接口、类、变量等都分别用不同的颜色标注,并且对应的变量引用,方法跳转都是支持的。

缺点

1、该网站目前支持查看的最新版本是Android 9。
2、国外网站,虽然国内也能访问(无需翻墙),但是速度有时候比较慢。

(二)aosp opersys

网址:http://aosp.opersys.com/

网站首页:
image.png

顶部列出当前可查看的系统源码版本(Android 11无法访问),以Android 10为例:
image.png

可以看出,搜索界面与Android XRef 类似,多了一个Type,用以指定搜索的文件类型:
image.png

其它操作方式类似,此处就不再细说。

缺点

1、该网站也是国外网站,有时比较慢。
2、Android 11的源码无法访问(2021-5-30)。

(三)Android 中文社区

国外网站速度有限制,国内的网站当然顺畅无比,Android 中文社区搭建了查看源码的网站。
网址:https://www.androidos.net.cn/sourcecode

网站首页:
image.png

以Android 10为例:
image.png
列出了源码的目录结构,还附带一些简单的说明,适合刚接触源码的同学快速厘清各个目录模块的大致功能。

优缺点

虽然访问速度不再是瓶颈,但该网站最大的缺陷是方法、类等索引不能跳转。

(四)Android opengrok

现在需要找到速度快,又可以支持索引的网站。
网址:https://android-opengrok.bangnimang.net/

网站首页:
image.png

该网站提供了Android 源码镜像的Opengrok索引,国内访问无需担忧速度。
以Android 11为例:
image.png
搜索界面与Android XRef 类似。

(五)Google 官方出马

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

网站首页:
image.png
不仅有Android 源码,还有AndroidX与Android Studio的。
image.png
image.png

以Android 11 为例,搜索Activity.java:
image.png

想要搜索成员变量mWindowManager的所有引用,只需要点击该变量即可。
下方就会显示该成员变量在Activity.java里的所有引用。
这个体验就和在Android Studio里查看源码一样,查找、跳转都很nice,极大方便了阅读、理解源码逻辑(在这方面的体验比Android XRef 方便多了)。
并且这是Google 出品的,源码更新及时,版本分支分类更细,更完整。

缺点

需要翻墙。

3、总结

以上分别从本地与在线列举了几种查看源码方式,个人推荐如下:

1、若是有翻墙条件,首推: https://cs.android.com/
2、没有翻墙条件,推荐: https://android-opengrok.bangnimang.net/
3、初学者想简单了解源码结构,推荐: https://www.androidos.net.cn/sourcecode
4、若是平时只是简单看看源码,推荐Android Studio关联源码

若你有更好的查看Android 系统源码方式,请在评论区不吝分享,感谢!

您若喜欢,请点赞、关注,您的鼓励是我前进的动力

持续更新中,和我一起步步为营系统、深入学习Android/Java

如何查看android源代码
shiyuntian_wang的专栏
12-03 2951
先下载源码,最新为2.21. 源码地址:http://rgruet.free.fr/public/2.找SDK目录安装的SDK到我的目录E:/E:/android-sdk-windows/     找到目录 结构如下:E:/android-sdk-windows/       -platforms     +android-3     +android-....     +android-8(数字代表api版本)最高的android-8对应的是SDK2.2。 在android-8文件中新建sources然后
Android例子源码自带十几种动画的NiftyDialogEffects对话框
03-16
 本项目是一个自定义的Dialog项目Nifty Modal Window Effects,提供十多种对话框弹出动画,但是只提供了一种对话框样式, 
Android例子源码几种安卓特效打包项目
07-29
本例子是一个19种安卓特效大全的例子源码,包括淡入淡出效果、放大淡出效果、转动淡出效果1、转动淡出效果2、左上角展开淡出效果、压缩变小淡出效果、右往左推出效果、下往上推出效果、左右交错效果、缩小效果、上下交错效果等11种Activity之间的转跳效果、书籍翻页效果、九宫格效果、可以收缩的底部面板、IdeasAndroid列表演示、水波纹效果、风吹旗帜效果、上下滑动选择效果、仿QQ列表、可左右滑动界面、带倒影的3D图片墙等。所有的效果实现源码都集成到一个例子里面了。
一个可以查看各个Android版本源代码的完整网站
最新发布
chuyouyinghe的专栏
03-18 89
不好的点就是,好像没看到哪里有搜索文件的入口,这也就意味着,你得知道需要找的文件的路径。现在可以查看Android源码的网站应该有很多,这里分享前面几天看到的一个。比较好的一个点就是,Android历史的各个版本都能看到。各个Kerenel版本也是有的。
android源码查看
05-21
android源码查看
Android例子源码自带十几种动画的NiftyDialogEffects对话框.rar
11-27
Android例子源码自带十几种动画的NiftyDialogEffects对话框
Android 源代码在线查看 目录结构 不完全指南
李斯维的博客空间
01-19 7051
分享几个可以在线查看Android 源代码的网站: Android 源代码官方查看网站:https://cs.android.com/; AOSPXRef 在线查看源代码:http://aospxref.com/; AndroidXRef 在线查找源代码:http://androidxref.com/;
在线看Android源码
zgf1991 IT新人
02-08 820
转载  http://blog.chinaunix.net/uid-26404477-id-3049307.html 这两天一直在寻找android系统的源代码,但是直到一个小时之前,一直未能如愿。但是,令人欣慰的是,现在找到了。 网上有不少帖子介绍如何下载android源代码,包括在linux系统,windows系列和mac os系统。但是本人经过测试,并没有发现哪些帖子
获取 + 查看 Android 源码的 方法
whotodo
10-27 393
-----------------------------------------------------------------------------------Android源码获取方法。 作为一个Android开发者,必要的时候阅读以下源码可以拓宽一下自己的视野和对android的认知程度。 Google的Android源码管理仓库是用的是Git。Android是一个开源手机终端系统...
Android:如何查看Android源码
qjyws的博客
02-01 1765
一、Android源码查看网址推荐 Google官方Android源码阅读 十分好用
android 查看源码的网站
qq_40207976的博客
12-18 145
androidxref.com
查看源代码工具android
09-20
源代码查看工具 安卓
Android网页源代码查看器___可运行源码
07-18
这是根据喜好做的一个简单的Android网页源代码查看
Android实现关机与重启的几种方式(推荐)
01-05
Android实现的方式如下几种: 默认的SDK并没有提供应用开发者直接的Android系统关机或重启的API接口,一般来讲,实现Android系统的关机或重启,需要较高的权限(系统权限甚至Root权限)。所以,在一般的APP中,如果...
word源码java-Android-Interview-Gathered:Android-面试-集结
06-05
Android多线程的几种方式 Handler.sendXXXMessage() Handler.post(Runnable) Activity.runOnUIThread(Runnable) View.post(Runnable) AsyncTask 布局的优化 HierarchyViewer查看Layout层次 标签重用一些比较复杂的...
Android 系统源码查看六种方式
码点
06-26 4920
Android 系统源码查看六种方式
Android Studio 查看不到系统源码终极解决方案
王能的小屋
06-18 8351
以前从来没有出现过看不到源码的情况,今天突然找不到源码了。 原因当然不是as抽风而是属于手贱 打开微信分享的源码WXApiImplV10会发现头顶上出现如图样式 意思就是反编译失败了(失败后有些代码会显示不全,并且debug这里的代码会对不上),并且右上角的2个蓝字非常诱人...于是就乱点一通(里面的操作会修改源码路径),第二天(重启as后导致的)你就会发现Android源码变成了和上面一模...
Android开发者如何正确阅读源码?552页源码精编解析开源分享
m0_59162559的博客
08-26 679
阅读优秀源码如同读名家著作,自己也会被艺术和文化气息所熏陶。在我们阅读了大量源码,积累了许多知识点后,写代码也会更加顺滑。 许多开发者在看到繁冗的源码时直呼头大,但从我多年经验来看,其实阅读源码也是有一定技巧的。下面分享**三个方法**给大家:...
如何查看Android源码(在线和用Android Studio查看
热门推荐
huangyh000000的博客
08-02 2万+
最近在看《Android开发艺术探索》,里面几乎都是基于Android源码的深入分析,回想自己之前没太在意系统源码查看和学习,所以想要补充一下这方面知识。 查看Android源码方式,共分为两种:     一、在线查看Android源码       1.通过第三方网站直接访问            (1)https://github.com/android
如何学习Android系统源码
05-26
学习 Android 系统源码需要具备一定的基础知识,包括 Java 编程语言、Android 应用程序开发、Linux 操作系统等。以下是一些学习 Android 系统源码的方法: 1. 阅读官方文档:Android 官方提供了详细的 Android 系统源码文档,包括 Android 系统架构、编译系统、运行时环境等。 2. 下载源码:从 Android 官方网站下载 Android 源码,可以通过 git 工具进行下载。 3. 学习编译:Android 系统源码需要编译才能运行,需要学习如何编译 Android 系统源码。 4. 阅读代码:阅读 Android 系统源码需要掌握 Java 语言和 Android 应用程序开发的知识,需要花费大量的时间和精力来理解代码。 5. 了解调试工具:学习使用调试工具可以帮助更好地理解 Android 系统源码,例如使用 Android Studio 进行调试。 6. 参与社区:加入 Android 开发者社区,与其他开发者交流学习经验,了解最新的 Android 系统源码开发动态。 总之,学习 Android 系统源码需要耐心、毅力和时间,需要系统地学习和实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Android-FileProvider-轻松掌握 31364
  • Android-系统源码查看的几种方式 9046
  • Java Synchronized 偏向锁/轻量级锁/重量级锁的演变过程 7487
  • 数字签名/数字证书/对称/非对称加密/CA 等概念明晰 5545
  • Java 线程池之线程返回值 5499

分类专栏

  • 前端体系化 2篇
  • Kotlin 从现在开始学 24篇
  • Android 性能优化 4篇
  • Jetpack 细水长流 9篇
  • Java 并发 24篇
  • 信息安全 1篇
  • Android 进阶 49篇
  • HarmonyOS Next 1篇

最新评论

  • Android使用Hilt依赖注入,让人看不懂你代码

    小鱼人爱编程: 依赖注入是编译时就生成代码了,对运行时性能影响不大。

  • Android使用Hilt依赖注入,让人看不懂你代码

    职场007: 请教下这种依赖注入的方式确实好用,但是会不会影响性能呀,假设要作性能优化,生成的代码能保证性能是最优的吗表情包

  • 数字签名/数字证书/对称/非对称加密/CA 等概念明晰

    不脱发的橙旭猿: 通俗易懂

  • 真正理解Java Volatile的妙用

    小鱼人爱编程: 确实少了"不",已修改,感谢指正~

  • 真正理解Java Volatile的妙用

    风~zZ: 引用「由于是线程1和线程2同时修改x,因此就会存在一个风险:当线程2修改x时并不知道线程1在修改x,当然线」 当然线程1也知道线程2:这里似乎少了一个字

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 少年,且听我细说 EventLoop/宏任务/微任务是咋玩的?
  • 论Promise在前端江湖的地位及作用
  • 先撸清楚:并发/并行、单线程/多线程、同步/异步
2024年5篇
2023年12篇
2022年27篇
2021年75篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司福州百搜标王价格济南网络营销哪家好乌海网站优化公司张家口优秀网站设计那曲百度爱采购公司醴陵网站关键词优化报价九江百度seo公司延边网站seo优化哪家好杭州网站优化排名报价宝安网站设计公司龙华建设网站公司南京网络广告推广推荐青岛高端网站设计公司晋城网站改版报价衡阳百度seo公司淮北关键词按天扣费哪家好渭南SEO按天计费报价梧州关键词排名包年推广推荐锦州建站公司广州网站seo优化南通企业网站建设报价海北网站设计推荐通化网站制作价格安庆网站推广工具推荐永湖网站制作设计价格大同百姓网标王推广价格淮北优化推荐九江网络广告推广多少钱龙华seo排名报价淮南SEO按天扣费推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

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