小编语:老罗(罗升阳)的Android之旅,在国内是让不少人收益,也给了我非常大的启示,老罗最近自己折腾了一个网站叫《进击的程序员》,域名:http://0xcc0xcd.com/,继续他的分享之路。他最近录制了两个视频,放在他的网站,是免费的,由于他传的是优酷视频,可能要看一会广告。下面是一些视频的大纲,老罗的写出那本厚书,就是在他的Ubuntu下完成他的源代码分析。我没看视频时,是很难想象我们平时熟悉的linux命令,还可以这么玩。我以前是用学校机房服务器,编译了源码,耗时很长且慢,后来觉得,源码阅读及分析才是关键,我少有真正从骨子里佩服的人。老罗是其中一个,当然,我也是老罗的铁粉,一如既往支持老罗,向老罗学习。点击【阅读原文】,可直接看视频,感兴趣的记得关注老罗的网站《进击的程序员》http://0xcc0xcd.com/,两个视频就在他的页面上。下面简介下视频大纲。

《Android源代码下载和编译》视频大纲

视频大纲

一. 源码下载

1.1 开发机

  • Linux(Ubuntu)

  • Mac

1.2 翻墙

1.2 初始化环境

  • http://source.android.com/source/initializing.html

1.3 下载源码

  • http://source.android.com/source/downloading.html

  • 自动下载脚本

for (( ; ; ))
dorepo sync -j16if [ $? == 0 ]; thenbreak;fi
done

错误处理示例:

1. stderr: fatal: remote error: Daily ls-remote rate limit exceeded for IP 188.165.175.132.

http://source.android.com/source/downloading.html#using-authentication

2. Fetching projects: 99% (478/482) Fetching project platform/external/sqlite

error: Cannot fetch platform/packages/apps/OMA-DM

搜索错误提示:Cannot fetch platform/packages/apps/OMA-DM

二. 源码编译

http://source.android.com/source/building.html

错误处理示例:

1. unsupported reloc 43

libnativehelper/JniInvocation.cpp:165: error: unsupported reloc 43

搜索错误提示:unsupported reloc 43

2. make update-api

see build/core/apicheck_msg_current.txt

******************************

You have tried to change the API from what has been previously approved.

To make these errors go away, you have two choices:

1) You can add "@hide" javadoc comments to the methods, etc. listed in the errors above.

2) You can update current.txt by executing the following command:

make update-api

To submit the revised current.txt to the main Android repository,

you will need approval.

******************************

《Android源代码情景分析法》视频大纲

一. 工具

1.1 vim

  • 模式切换 -- i、esc

  • 搜索 -- /<关键字>

  • 跳转到指定行 -- :<行号>

  • 剪切、复制、和粘贴指定行 -- dd、yy、p

  • 剪切、复制、和粘贴指定内容块 -- v、d、y、p

  • 创建新行并进入编辑模式 -- o

  • Undo、Redo -- u、ctrl + r

  • 保存、退出 -- w、wq、q!

1.2 find + xargs + grep

  • 查找ActivityManagerNative类的子类:

?

find -name '*.java' | xargs grep 'extends[ \n\t]\+ActivityManagerNative'

二、情景分析

一个工程会由很多个模块组成,每一个模块向外提供若干个调用接口。这些调用接口就是我们分析源码的切入点。从这些切入点出发,一步一步地跟踪每一个函数调用,直至终点。这个分析过程就是情景分析。情景分析实际上是把源码划分成一条又一条的线,每一条线都会把相关的功能点串在一起,形成一个上下文。因此,当我们选定了一条线进行分析的时候,就可以把无关的模块晾在一边,最大程度地减少干扰。

在做情景分析的时候,我们要适当地做笔记,主要记录函数的调用过程以及函数的位置。这样不仅能提高分析源码的效率,也方便日后反复查阅。

示例,Activity启动过程分析(基于5.0.0_r1版本源码):

?

1-->Activity.startActivity frameworks/base/core/java/android/app/Activity.java
2-->Activity.startActivityForResult   frameworks/base/core/java/android/app/Activity.java
3-->Instrumentation.execStartActivity frameworks/base/core/java/android/app/Instrumentation.java
4-->ActivityManagerProxy.startActivity frameworks/base/core/java/android/app/ActivityManagerNative.java
5-->ActivityManagerNative.onTransact frameworks/base/core/java/android/app/ActivityManagerNative.java
6-->ActivityManagerService.startActivity frameworks/base/services/core/java/com/android/
server/am/ActivityManagerService.java......

详细过程,参考:Android应用程序启动过程源代码分析

Office Word: 流程图、架构图和示意图

MagicDraw UML: 类图、序列图

第一时间获得博客更新提醒,以及更多android,源码分析,最新开源项目推荐,更多有价值的思考,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码

【视频教程】老罗分享Android源代码下载和编译及如何分析源代码相关推荐

  1. 老罗的Android系统分析(三横三纵)

    经过两年的时间,终于完成对 Android系统的研究了.Android是一个博大精深的系统,老罗不敢说自己精通了(事实上最讨厌的就是说自己精通神马神马的了,或者说企业说要招聘精通神马神马的人才),但是 ...

  2. 《老罗的Android之旅》导读PPT

    虽然好几个月没更新博客了,但是老罗一直有在准备可以分享的东西的.除了早前在微博分享Android4.2相关技术之外,这次还特意准备了13个PPT,总结之前所研究过的东西.内容从Android组件设计思 ...

  3. 【转载】专访罗升阳:老罗的Android之旅

    CSDN:你用两年的时间炼就了深厚的Android内功修养,请问期间的学习之路是怎样的?有什么学习的心得和体会可分享? 罗升阳:那两年基本是把所有的业余时间都花在了学习Android上,包括工作日的下 ...

  4. 专访罗升阳:老罗的Android之旅(转载)

    本文转载地址:专访罗升阳:老罗的Android之旅 [编者按]我们常说的智能手机实际上就是手机上加了一个操作系统,那么大部分人都会跟我一样不禁发问,这个操作系统和我们接触更多的电脑上的操作系统一样吗. ...

  5. 《老罗的Android之旅》专栏目录

    Android学习启动篇 在Ubuntu上下载.编译和安装Android最新源代码 在Ubuntu上下载.编译和安装Android最新内核源代码(Linux Kernel) 如何单独编译Android ...

  6. 专访罗升阳:老罗的Android之旅

    CSDN首页 > 业界 专访罗升阳:老罗的Android之旅 发表于2014-08-15 14:13| 10091次阅读| 来源CSDN| 0 条评论| 作者钱曙光 社区问答访谈罗升阳Andro ...

  7. Android源代码下载与编译 - 2019

    Android源代码下载与编译 - 2019 (基于Ubuntu 18.10,适用于国内环境) 下载repo工具 如果没有下载repo脚本工具,请到清华mirror下载 curl https://mi ...

  8. Android AOSP 下载和编译

    Android AOSP 下载和编译 欢迎入群交流 环境 链接: https://source.android.google.cn/docs/setup/build/initializing?hl=z ...

  9. ubuntu-18.04.4 Android系统源码TP1A(Android 13)下载及编译

    继上一篇博客介绍了VMware Workstation15 配置ubuntu-18.04.4,这篇主要介绍安装后环境搭建,Android源码的下载与编译.小编当前下载的是当前最新的代码,是主干分支代码 ...

最新文章

  1. Springboot总结,核心功能,优缺点
  2. 《C++成员函数重载、覆盖与隐藏》
  3. AndroidStudio Gradle download
  4. deepin--解决网易云音乐个性推荐无法加载
  5. JavaScript实现depth First Search深度优先搜索算法(附完整源码)
  6. C++检查给定数字是否为4的幂的算法实现(附完整源码)
  7. 阿里云物流+Flask整合
  8. 如何在IE浏览器里面定位到关键字的位置(页面代码)和这个关键字位置模块的请求
  9. CSS3伸缩布局的应用
  10. proxy ip 收集方式总结
  11. 【codemirror】Json编辑器使用总结
  12. Zotero + 坚果云 文献管理器配置
  13. 【VOIP】yate sip客户端直接呼叫
  14. 化妆品选购指南_痘痘肌专属
  15. 网页版红警的资源加载的实现
  16. 什么是 DNS MX 记录?
  17. 西雅图又一家科技公司准备上市!
  18. PS教程如何用Photoshop 创造奇幻的燃烧着的鹿
  19. 2022数维杯数学建模A题
  20. c语言void delayms,C语言题、谁帮我看看啊!!!!

热门文章

  1. forager有多少个机器人_forager手机测试版下载
  2. 近期关于新加坡你必须知道的5件事
  3. 第一个unity_第一个Unity Humble捆绑包现已上市
  4. 【C#设计模式】总目录(共23种)【已全部完结!】
  5. NLP学习笔记<2>
  6. Unity3D第三人称视角摄像机、跟随与球面旋转
  7. ChatGPT风口下的中外“狂飙”,一文看懂微软、谷歌、百度、腾讯、华为、字节跳动们在做什么?
  8. 模型训练中_pickle.PicklingError: Can’t pickle问题解决办法
  9. centos7配置命令别名
  10. U2-Net: Going Deeper with Nested U-Structure for Salient Object Detection