想阅读 Android 源码,请问我该往哪个方向努力? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZSpirytus
V2EX    Android

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

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

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

    尝试鼓捣过 AOSP,生成 ipr 文件后在 Android Studio 基本不报红。但是看源码抓瞎,不知道从何看起(如:①应用在安装过程中,Android 系统做了什么操作;②又或是状态栏下滑时,当前 Taskecord 顶部的 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     Solana     3941 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 05:23 PVG 13:23 LAX 21:23 JFK 00:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86