• 【转】如何阅读android源码


    有一次当我打开grepcode 的时候,显示了503,我以为只是短期的服务器错误,没想到持续到现在了...

    相同的体验还有

     

    其实还有些大大小小的站也关闭了,很忧伤...

    好了,回到主题,本篇主要讲如何阅读 Android framework 层的源码。

    看下 Android 的整体架构:

     

    关注本号的大多数同学都是做应用层的,所以对我们来说一般只要看到Framework 的源码:

    比如:AMS,WMS,PMS 等...包括上周推送的 AccessibilityService 源码,以及 Activity 生命周期是如何回调的,都涉及到该类知识。

    本篇文章不讨论,能够下载整个几十G的源码,修改编译后,导入到 AS的方式,成本比较高,可以自行搜索。

    1

    在线查看

    在线查看,这个方式一般适合有针对性的查看某个类:

    网站1

    http://androidxref.com/

     

    你可以查看各个版本的源码。

    给大家录制个gif:

     

    网站2

    https://www.androidos.net.cn/sourcecode

     

    也比较方便,还是录个gif 吧:

     

    2

    我要在 AS 中看

    在线查看一般都是比较精确要看哪个类的时候,并不能满足我们日常快速查看的需求。

    例如我忽然想看下 startActivity 的流程,总不能还在线一个个类搜索吧,太慢了。

    其实多数hide API的类源码,我们都下载下来了,不信你打开sdk 文件夹。

    比如 ContextImpl 这个类:

     

    包括 AMS 这些类,其实源码中都包含,只是在对应的android.jar 中缺少这些class 文件而已。

    所以我们可以将sdk 中使用的android.jar 替换为完整的jar。

    去哪找完整的jar 呢?自己编么?

    自己编译成本是不是过高了,这么多人有需求,那么 github 上面肯定有啦。

    https://github.com/anggrayudi/android-hidden-api

     

    选择对应的版本,下载对应的jar 文件。

    然后替换即可,例如我这里替换了android-26下的jar。

     

    你可以将原本的改下命名保留,然后将刚下载的复制过去即可。

    当你完成这些操作,AS 会自动感知到发生的变化,然后重新建立索引,稍等下就好了。

    注:如果你担心有什么副作用,可以选择一个不常用的版本替换,比如你们日常使用26,你可以将25的进行替换,新建一个module compileSdk=25就可以查看了。

    然后你就可以在 Android Studio 中来放肆的查看源码了:

     

    偶尔会有一两个类找不到,那么你就可以配合在线查看的方式去看了。

    3

    我要自己下载framework 源码查看

    当然了,自己下载源码来查看肯定是最靠谱的方式,但是自己下载有两个问题。

    1. 在哪里下载呢?

    2. Android 源码那么大,可以只下载framework 部分么?

    3. 如何阅读

    官方地址:

    https://android.googlesource.com/

    如果你的网络够给力,直接下载。

    清华大学镜像地址:

    https://aosp.tuna.tsinghua.edu.cn/

    当然我们并不希望下载完整的源码,下载下来我也不知道怎么编译。

    所以我们只下载自己需要的部分:

    git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base

    当然github 也有地址:

    https://github.com/aosp-mirror/platform_frameworks_base

    也可以提供下载。

    相信到这里,你肯定能下载下来一份frameworks源码!

    找个称手的工具

    源码下来了,如何更方便自己阅读呢?

    那就需要一个称手的软件,在windows 下可以使用`source insight`。

    作为 MAC 用户很忧伤。

    以下内容针对 MAC 用户,windows 用户去就使用`source insight`吧。

    1. sublime

    sublime 也算是我非常喜欢的一个文本编辑器,当然功能非常强大,你可以给它安装个ctags 插件,然后用来查看源码。

    最终效果大概是这样的:

     

    由于大家版本都不同,如何安装自己搜索啦,关键词sublime 查看源码

    2. UnderStand

    最终的效果是这样的:

     

    记得导入后等它index 完毕,快捷键什么的,自己去摸索吧。

    功能非常强大,可以生成各种图。

    缺点就是有点卡。

    个人非常推荐替换android.jar 的方式,当然也建议大家尝试摸索下上述软件。

    如果你有更好的方式,欢迎留言~

    最后 wanandroid.com 也在开发在线源码阅读的能力,给大家多增加一个备选方案!

    参考

    https://github.com/foxleezh/AOSP/issues/1

     

    原文连接:https://kuaibao.qq.com/s/20180718G08DV600?refer=cp_1026

  • 相关阅读:
    [bzoj1064][Noi2008]假面舞会
    [bzoj1503][NOI2004]郁闷的出纳员
    [bzoj1758][Wc2010]重建计划
    [bzoj1588][HNOI2002]营业额统计
    [bzoj2423][HAOI2010]最长公共子序列
    [3.26福建四校联考]
    [51nod1238]最小公倍数之和V3
    [bzoj2301] [HAOI2011]Problem b
    [hdu5608]function
    [51nod1239欧拉函数之和]
  • 原文地址:https://www.cnblogs.com/ryq2014/p/10345705.html
Copyright © 2020-2023  润新知