您现在的位置: 主页 > 嵌入式操作系统 > Android > 【视频教程】老罗分享Android源代码下载和编译及如何分析源代码
本文所属标签:
为本文创立个标签吧:

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

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-07-26 

小编语:老罗(罗升阳)的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

  • 自动下载脚本


  1. for (( ; ; ))

  2. do

  3.  repo sync -j16

  4.  if [ $? == 0 ]; then

  5.    break;

  6.  fi

  7. 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[ nt]+ActivityManagerNative'


二、情景分析


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


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


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

?


  1. 1-->

  2.  Activity.startActivity

  3.  frameworks/base/core/java/android/app/Activity.java

  4. 2-->

  5.  Activity.startActivityForResult  

  6.  frameworks/base/core/java/android/app/Activity.java

  7. 3-->

  8.  Instrumentation.execStartActivity

  9.  frameworks/base/core/java/android/app/Instrumentation.java

  10. 4-->

  11.  ActivityManagerProxy.startActivity

  12.  frameworks/base/core/java/android/app/ActivityManagerNative.java

  13. 5-->

  14.  ActivityManagerNative.onTransact

  15.  frameworks/base/core/java/android/app/ActivityManagerNative.java

  16. 6-->

  17.  ActivityManagerService.startActivity

  18.  frameworks/base/services/core/java/com/android/

  19. server/am/ActivityManagerService.java

  20.    ......



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

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

MagicDraw UML: 类图、序列图


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



              查看评论 回复



嵌入式交流网主页 > 嵌入式操作系统 > Android > 【视频教程】老罗分享Android源代码下载和编译及如何分析源代码
 视频 源码 分析

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

网站地图

围观()