V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZSpirytus
V2EX  ›  Android

想阅读 Android 源码,请问我该往哪个方向努力?

  •  
  •   ZSpirytus · 2021-02-03 16:50:04 +08:00 via Android · 9110 次点击
    这是一个创建于 1387 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是一年经验的 Android 开发,在某大厂工作。对 Android 的源码比较有兴趣。

    尝试鼓捣过 AOSP,生成 ipr 文件后在 Android Studio 基本不报红。但是看源码抓瞎,不知道从何看起(如:①应用在安装过程中,Android 系统做了什么操作;②又或是状态栏下滑时,当前 TaskRecord 顶部的 Activity 会发生什么变化,等等),请问我该怎么做?

    先感谢各位老哥老姐的回复!

    12 条回复    2021-02-22 16:13:13 +08:00
    MaxLi77
        1
    MaxLi77  
       2021-02-03 17:23:20 +08:00
    半吊子先回答一下,Activity 相关 AMS,安装包管理 PMS,服务管理 Service Manager,进程通信 Binder 。懂的老哥可以多补充。
    calloc
        2
    calloc  
       2021-02-03 17:52:43 +08:00 via iPhone
    可以从上层 APP 入手,比如要分析安装 apk 时系统做了什么,我们知道系统在安装 apk 的时候 UI 界面是有所体现的,那么可以用`adb shell dumpsys activity top`命令查看当前界面对应的 Activity 。知道它的 Activity 就可以在源码中找到它对应的类,之后就可以用调试大法了。
    ZSpirytus
        3
    ZSpirytus  
    OP
       2021-02-03 19:17:28 +08:00 via Android
    @MaxLi77 感谢!我主要想搞懂某一个细节,比如说,点击安装后,系统做了什么之类的,直接看 AMS 和 PMS 的源码容易抓瞎。。
    ZSpirytus
        4
    ZSpirytus  
    OP
       2021-02-03 19:18:06 +08:00 via Android
    @calloc 感谢!这个思路巧妙,忘了还有 adb 这个工具,我试试看!
    elonmask
        5
    elonmask  
       2021-02-04 08:23:28 +08:00 via Android   ❤️ 1
    现在的安卓开发卷的厉害,想当年知道四大组件和生命周期就可以去 bat,现在又是 framework 又是 kernel 的,
    12 年的时候我记得当时 QQ 安卓 app 的账号和密码都还放明文放 share preference 呢。如果
    还年轻可以读个研或者自学换个方向,写界面是没有前途的。
    MaxLi77
        6
    MaxLi77  
       2021-02-04 09:26:39 +08:00
    @ZSpirytus 直接搜索 XXX 功能 + 源码分析,跟着别人的分析思路去看
    m30102
        7
    m30102  
       2021-02-04 10:22:00 +08:00
    @elonmask 以前 20 分的水平能一年一套房,现在 80 分的水平大概率睡桥洞
    welkinshadow002
        8
    welkinshadow002  
       2021-02-04 14:44:15 +08:00
    这里推荐 Gityuan 的相关博客,对整个流程的理解十分有帮助,http://gityuan.com/android/,我自己还买了一些书 android 系统内核设计思想啥的。

    不过需要注意的是 android10 、android11 系统源码的改动比较大,自己还是要去跟一下

    同样一年经验在学源码,共勉
    ZSpirytus
        9
    ZSpirytus  
    OP
       2021-02-04 22:12:32 +08:00 via Android
    @MaxLi77 哈哈,这个确实也是一种思路,我试试
    ZSpirytus
        10
    ZSpirytus  
    OP
       2021-02-04 22:14:08 +08:00 via Android
    @welkinshadow002 谢谢,这个我参考一下
    ZSpirytus
        11
    ZSpirytus  
    OP
       2021-02-04 22:14:56 +08:00 via Android
    @elonmask 我是纯兴趣的,只是好奇里面是怎么工作的
    yolo0014
        12
    yolo0014  
       2021-02-22 16:13:13 +08:00
    可以从 SystemUI 和 launcher 入手看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1210 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:11 · PVG 07:11 · LAX 15:11 · JFK 18:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.