大牛们是怎么阅读 Android android答题系统源码码的

20:11 提问
求安卓开发大牛讲讲学习经验
我现在是大三本科的学生,从大二开始对移动开发特别感兴趣,
所以自己自学了java(看的韩顺平老师的视频) 掌握了一些基本的东西
又自学了安卓的开发基础(也是通过看慕课网和极客学院的视频)
现在就是感觉自己会了很多,又感觉自己什么都不会。
自己想了一个app项目,做的时候也感觉很多东西没接触的,百度就可以。
现在不知道是该搞搞理论,还是继续做项目,自己一个人做也没人指导。
大牛们,希望你们能给我点建议。
按赞数排序
想必你的理论基础应该可以了。
“现在就是感觉自己会了很多,又感觉自己什么都不会。”这种感觉的到来,必需要趁热打铁才行,如果懈怠了就真什么都不会了。
我的意见是你要继续做你的项目。有了理论基础后,要到实践中磨练,把拿捏不准的地方搞通,在编码的过程中找自己的不足。
做中学,学中做。你一定会成功的。
如果你要学Android系统的更深层一些,欢迎与我交流。
把github上的几个论坛的客户端源码写一遍
转一篇文章供你参考:
Android的学习总结
现在对于Android的学习已有斗个学期了,但它对我来说其实还是一个大大的谜,还有待我去对它一一揭晓。
在还没有学习Android这门课之前,当听到别人谈到它时,知道它离我们很近,但是它给我的感觉却是那么的神奇,一直就是在听说着关于Android系统怎么怎么的新闻,知道它就在我的生活中,离我很近,我也在用它,但还是总有一种很遥不可及的感觉,觉得它不在我的思想里,所以呢,对于这门课《Android系统开发与实践》的学习很是期待的。
在上一个学期快要结束的时候,就听到老师说了一下,说下一个学期我们可能会学习Android系统的开发,他还说这个Android系统的开发很值得学习,很值得我们去探索,说这个Android还一直在开发中,是一项很好玩的系统,当时就很是兴奋了,总是会在想Android系统到底是怎样的,它是如何的深入我们的生活,又是如何的到我们所用的这些设备当中的,这一切都让我感到很好奇。就这样带着一系列的问题走进了 这个学期,终于就要与它见面了,这门课也就在这样的背景下,这样的一种环境下走进了我的课堂,它给了我一种兴奋感,对于它的出现,我很是期待的,一开始老师就给我们讲解了一些关于Android的知识,也给我们展示了Android系统开发的平台,真的给了我一种奇妙的感觉,它不仅有编译,它还有一个模拟器,就和我们用的手机一模一样,上面也有简单的几个图标:电话、短信等等,真的感觉到了不可思议,感觉到一种神秘,Android系统的开发就是在这样的一个平台上完成的,你可以对它进行你想要的修改,只要是你想到的,你都可以支尽情的尝试,这让人兴奋。
这门课的学习从这里就这样开始了,《Android系统开发与实践》这本课本它是以讨论Android系统平台为基础,并结合实例讲解教程和实践指导类教材。本书中全方位的讲解了Google开放移动应用平台Android的各种特性,深入探讨了应用程序的基本组件、界面布局的基础,结合Internet实现通讯录的设计和发送短信实例详细介绍了Android系统平台开发的步骤和方法,从而实现对Android系统的平台开发的深入了解。
基于嵌入式技术的Android是目前增长速度最快的智能3G手机操作系统,其底层系统是以Linux内核为基础,用C语言开发;中间层包括函数库library和虚拟机Dalvik,用C++语言开发;上层应用软件,包括通话程序,短信程序等,用Java语言开发。所以,要想好好的学习Android系统的开发,那就必须掌握C++和Java语言,它们都是基础。
Android学习并不是那么的容易,你得很努力很认真的去学习,但如果只是浅浅的了解,那就简单得多,但并不是这样的,你得更加深入的去学习,你才算是懂一点。
Linux是Android开发的基础,Linux是一套免费使用和自由传授的类UNIX操作系统,它速度快,运行稳定,对硬件的配置要求低,兼具了其他系统的优点,最关键是可以免费使用,所以Linux得到了迅猛的发展,我们学习Android的开发就得了解Linux,它常用的一些操作命令是我们必须要理解和掌握的,比如说:su命令,它是最基本的命令之一,常用于不同用户间切换。例如,如果登录用户为user1,要切换为user2,则用如下命令——$su user2 就行了;pwd命令,用于显示用户当前所在的目录;cd命令,不仅显示当前状态,还改变当前状态,它的用法跟DOS下的cd命令基本一致;ls命令,它跟DOS下的dir命令一样,用于建立磁带备份系统,目前广泛用于建立文件发布档案;gzip命令,用于压缩文件;mkdir命令,用于建立目录,跟DOS下的md命令用法几乎一样的;cp命令,用于复制文件或目录;rm命令,用于删除文件或目录;mv命令,用于移动文件和更多文件;reboot命令,重启命令;halt命令,关闭命令。这些都是我们学习Android系统所必须掌握的。
Android系统的开发更离不开Java,Java是一种简单的,面向对象的,分布式的,解释执行的,健壮的,安全的,结构中立的,可移植的,高效率的,多线程的和动态的语言,Java在Android平台开发中的应用起到了很关键的作用,Android的开发需要Java的上引动开发工具,Eclipse开发工具就是目前最主流的Java开发工具,Eclipse本身只是一个框架平台,
但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性,许多软件开发商以Eclipse为框架开发自己的IDE。
Android的学习真的不是那么容易的,就一个平台的搭建就已经难到了我,就这样一个开发平台它得有一个Java的环境,还要有IDE等等,花了一大半的时间终于搭建了一个框架,它的一些插件必须要在线的升级,就是说必须要有网才行,这是一件很难熬的事,但等到搭建好后,那是一种成就感,通过学习让我知道了Android系统也有它的不足之处:安全和隐私,由于手机与互联网的紧密联系,个人隐私很难得到保护,互联网的深入发展也将会带来新一轮的隐私危机;运营商仍然能够影响到Android手机;同类机型用户减少:在不少手机论坛都会有针对某一型号的资源,而对于Android平台手机,由于厂商丰富,产品类型多样,这样使用同一款机型的用户越来越少,缺少统一机型的程序强化;过分依赖开发商,缺少标准的配置等等的,这些的不足都在等待我们去探索。
Android系统平台的结构有:应用程序层,应用程序框架层,运行库层,Linux内核层。只有了解了这些才能助我们更好的学习Android系统,Android系统开发的相关环境必须安装并配置好,这是一个细活:第一得安装Java环境,然后还得修改Javadoc的link。第二设置环境变量,第三就安装repo,第四得在线下载Android源码并更新,第五是编译Android源码并得到~/project/Android/cupcake/out目录,第六在模拟器上运行编译好的Android源码,第七编译linux kernel,第八是编译模块,第九编译SDK。这个安装步骤我们得一步一步的做好 ,如果有哪一步做错了,就会影响到最终的结果。当你把所有的准备工作做好后,创建一个新的Android项目,你就会有一点点的兴奋与成就感,那是一种很自豪的一种享受。
在Android系统的开发过程当中我们要了解和熟悉源码的获得,源码树结构分析、Android源码简要分析、还有Android的移植,作为一个Android开发者,必要的时候阅读下Android源码可以拓宽一下自己的视野和对Android的认知程度,Google的Android的源码管理仓库用的是Git。Android是一个开源手机终端系统,基于Linux内核,我们可以下载一个Git客户端,在Windows下安装Git的客户端软件很方便的,安装完成后,我们建立一个文件夹,就可用于存放将要下载的源码,主机编译工具和仿真环境,对于这些目录和文件我们还要求会背下来,但得了解,了解它们是我们学习Android系统开发更加的轻松了。
要想学习好Android系统的开发,我们光学一些理论性的知识,那是远远不够的,我们得把理论与实践结合起来,才能起到事半功倍的效果,本来对于Android系统开发的学习就应该从实践当中去深入的,在学习的过程中,我们要有足够的耐心和足够的时候,去练习,去实践。在这门课当中的实例,比如,打电话,就让我们眼前一亮了,我们一直以来每天在做的打电话就是这样来的,这个实例提起了我们对Android系统的又一兴趣,Android系统的开发不仅给我们的生活带来了便利,也给我们带来了欢乐。
这以上就是这一段时间来我对Android系统开发的学习的一个总结与一个体会,Android系统的开发真的让我长了不少的知识,也带来了不少的见识,虽然我对于它的掌握还不那么的深,学习的也还不足,但我还是会一直坚持的学习下去,因为它的奇妙,因为我们的生活需要它,它的开发是永无止境的,它的学习也将是永无止境的。
无他唯有熟尔!联系多了就可以了。有人带可能会快一点,先做点小模块练手
楼主 这是我积累的图书资料 希望对你有帮助
其他相似问题
相关参考资料大牛们是怎么阅读 Android 系统源码的_百度知道
大牛们是怎么阅读 Android 系统源码的
提问者采纳
了解基本的Makefile编写会让你更清晰了解AOSP这个庞大的项目是如何构建起来的.04. 这应该是程序员必备技能吧, 那么Kernel相关的知识也要具备, 那么必需了解基本的Linux环境下的程序开发. 没得说. JavaJava是AOSP的主要语言之一. 如果再深入到驱动层, 并且AOSP的推荐编译环境是Ubuntu 12, Chromium项目(WebView的底层实现).熟练的Android App开发LinuxAndroid基于Linux的.C++Android系统的一些性能敏感模块及第三方库是用C++实现的, 必需熟练掌握. 如果你想了解偏底层的代码如果想深入的了解Android系统: Input系统.MakeAOSP使用Make系统进行编译, 比如.GitAOSP使用git+repo进行源码管理. 所以熟练的使用并了解Linux这个系统是必不可少的, 那么可以看下我的一些简单的总结
其他类似问题
为您推荐:
android的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁最近想去深入学习下底层的东西。看的哪一部分?有没有好的查看工具? 心得体会...
-----------------------------------------------------------------------------------------------------------------这是前言在Android系统源码上摸索4年,说说我的看法:显然Eclipse不是阅读Android源码的好工具,不流畅,搜索低效,继承性关系/调用关系都无法有效查看。推荐Source Insight,在这个工具帮助下,你才可以驾驭巨大数量的Android 源码,你可以从容在Java,C++,C代码间遨游,你可以很快找到你需要的继承和调用关系。顺便,现在东家是Linux+Samba+Windows的工作模式,Linux+Samba用于代码的同步/编译/管理,Windows做代码编辑。你需要先理解下这个图:Application层就是一个个应用程序,很好理解。Framework提供一个java的运行环境以及对功能实现的封装,简单点说,你家装修总要留很多水电之类的接口吧!Runtime/ART是一个java虚拟机,因为Android上层不是java吗,需要再编译一次成为低级一点的语言识别。从Libraries那些名字也可以看出来,这里有很多高端大气库,它是功能实现区,多媒体编解码,浏览器渲染啊,数据库实现啦,很多很多。Kernel部分负责陪硬件大哥玩,你那些功能实现的区域最终都要调硬件吧,Kernel这家伙已经和硬件很熟了,你就直接通过它来和冷冰冰硬件大哥打交道吧!好了,上面这些内容很好理解对不对,现在的问题是:当你拿到一份几G的源码,该从哪里开始呢?经过上面的前言的洗礼,你应该能够很好理解下面这部分了-------------------------------------------------------------------------------------------------------------------1.宏观上看,Android源码分为功能实现上的纵向,和功能拓展上的横向。在阅读源码时需要把握好着两个思路。譬如你需要研究音频系统的实现原理,纵向:你需要从一个音乐的开始播放追踪,一路下来,你发现解码库的调用,共享内存的创建和使用,路由的切换,音频输入设备的开启,音频流的开始。譬如你要看音频系统包括哪些内容,横向:通过Framework的接口,你会发现,音频系统主要包括:放音,录音,路由切换,音效处理等。2.Android的功能模块绝大部分是C/S架构你心里一定需要有这个层级关系,你需要思路清晰地找到Server的位置,它才是你需要攻破的城,上面的libraries是不是很亲切的样子?看完它长成啥样后,然后你才能发现HAL和Kernel一层层地剥离。很多研究源码的同学兜兜转转,始终在JAVA层上,这是不科学的,要知道libraries才是它的精髓啊。3.Android的底层是Linux Kernel。在理解1,2后,还是需要对Kernel部分有个简单的理解,起码你要熟悉kernel的基础协议吧!你要能看懂电路图吧!你要熟悉设备的开启和关闭吧!你要熟悉调寄存器了吧!这方面的书太多了,我建议根据实例去阅读,它并不复杂,不需要一本本厚书来铺垫。在libraries和kernel间,可能还会有个HAL的东东,其实它是对kernel层的封装,方便各个硬件的接口统一。这样,如果我换个硬件,不用跑了长得很复杂的libraries里面改了,kernel调试好了后,改改HAL就好了。--------------------------------------------------------------------------------------------------------------------好了,你现在是不是跃跃欲试准备去找个突破口准备进攻了,但是好像每个宝库的入口都挺难找了我大概在三个月前阅读完Android UI系统的源码,这是Android最复杂的部分,我要简单说下过程。我需要先找宝库入口,我要研究UI,首先要找什么和UI有亲戚关系吧!View大神跳出来了,沿着它往下找找看,发现它在贴图在画各种形状,但是它在哪里画呢,马良也要纸吧?很明显它就是某个宝藏,但是世人只是向我们描述了它有多美,却无人知在哪里?我们需要找一张地图罗。开发Android的同学逃不掉Activity吧!它有个setcontentview的方法,从这个名字看好像它是把view和activity结合的地方。赶紧看它的实现和被调用。,然后我们就发现了Window,ViewRoot和WindowManager的身影,沿着WM和WMS我们就惊喜会发现了Surface,以及draw的函数,它居然在一个DeCorView上画东西哈。借助Source Insight, UI Java层的横向静态图呼之欲出了。完成这个静态UML,我觉得我可以开始功能实现上追踪了,这部分主要是C++的代码(这也是我坚定劝阻的放弃Eclipse的原因),我沿着draw函数,看到了各个层级的关系,SurfaceSession的控制和事务处理,SharedBuffer读写控制,彪悍的SurfaceFlinger主宰一切,OpenGL ES的神笔马良。FrameBuffer和FrameBufferDevice的图像输出,LCD设备打开后,开始接收FBD发过来的一帧帧图像,神奇吧。好吧,就这样,再往底层我爱莫能助了!
由于工作需要大量修改framework代码, 在AOSP(Android Open Source Project)源码上花费了不少功夫, Application端和Services端都看和改了不少.&br&如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行. &br&但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结. &br&&br&&ul&&li&&b&知识&/b&&br&&/li&&ul&&li&Java&/li&&ul&&li&Java是AOSP的主要语言之一. 没得说, 必需熟练掌握.&/li&&/ul&&li&熟练的Android App开发&/li&&li&Linux&/li&&ul&&li&Android基于Linux的, 并且AOSP的推荐编译环境是Ubuntu 12.04. 所以熟练的使用并了解Linux这个系统是必不可少的. 如果你想了解偏底层的代码, 那么必需了解基本的Linux环境下的程序开发. 如果再深入到驱动层, 那么Kernel相关的知识也要具备.&/li&&/ul&&li&Make&/li&&ul&&li&AOSP使用Make系统进行编译. 了解基本的Makefile编写会让你更清晰了解AOSP这个庞大的项目是如何构建起来的.&/li&&/ul&&li&Git&/li&&ul&&li&AOSP使用git+repo进行源码管理. 这应该是程序员必备技能吧.&/li&&/ul&&li&C++&/li&&ul&&li&Android系统的一些性能敏感模块及第三方库是用C++实现的, 比如: Input系统, Chromium项目(WebView的底层实现). &/li&&/ul&&/ul&&/ul&&br&&ul&&li&&b&硬件&/b&&br&&/li&&ul&&li&流畅的国际网络&/li&&ul&&li&AOSP代码下载需要你拥有一个流畅的国际网络. 如果在下载代码这一步就失去耐心的话, 那你肯定没有耐心去看那乱糟糟的AOSP代码. 另外, 好程序员应该都会需要一个流畅的Google.&/li&&/ul&&li&一台运行Ubuntu 12.04的PC. &/li&&ul&&li&如果只是阅读源码而不做太多修改的话, 其实不需要太高的配置.&/li&&/ul&&li&一台Nexus设备&/li&&ul&&li&AOSP项目默认只支持Nexus系列设备. 没有也没关系, 你依然可以读代码. 但如果你想在大牛之路走的更远, 还是改改代码, 然后刷机调试看看吧.&/li&&/ul&&li&高品质USB线&/li&&ul&&li&要刷机时线坏了, 没有更窝心的事儿了.&/li&&/ul&&/ul&&li&&b&软件&/b&&br&&/li&&ul&&li&Ubuntu 12.04&/li&&ul&&li&官方推荐, 没得选.&/li&&/ul&&li&Oracle Java 1.6&/li&&ul&&li&注意不要用OpenJDK. 这是个坑, 官方文档虽然有写, 但还是单独提一下.&/li&&li&安装:&div class=&highlight&&&pre&&code class=&language-text&&sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default
&/code&&/pre&&/div&&br&&/li&&/ul&&li&Eclipse&/li&&ul&&li&估计会有不少人吐槽, 为什么要用这个老古董. 其实原因很简单, 合适. 刚开始搞AOSP时, 为了找到效率最优的工具, 我尝试过Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最终结果还是Eclipse. 主要优点有: &/li&&ul&&li&有语法分析 (快速准确的类, 方法跳转).&/li&&li&支持C++ (IntelliJ的C++支持做的太慢了).&/li&&li&嵌入了DDMS, View Hierarchy等调试工具.&/li&&/ul&&li&为了提高效率, 花5分钟背下常用快捷键&b&非常非常值得&/b&.&/li&&li&调整好你的classpath, 不要导入无用的代码. 因为AOSP项目代码实在是太多了. 当你还不需要看C++代码时, 不要为项目添加C++支持, 建索引过程会让你崩溃.&/li&&/ul&&li&Intellij IDEA&/li&&ul&&li&开发App必备. 当你要调试系统的某个功能是, 常常需要迅速写出一个调试用App, 这个时候老旧的Eclipse就不好用了. Itellij IDEA的xml自动补全非常给力.&/li&&/ul&&/ul&&li&&b&巨人的肩膀&/b&&br&&/li&&ul&&li&AOSP项目官方: &a href=&///?target=https%3A///source/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/sour&/span&&span class=&invisible&&ce/index.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&ul&&li&&b&这个一定要先读&/b&. 项目介绍, 代码下载, 环境搭建, 刷机方法, Eclipse配置都在这里. 这是一切的基础.&/li&&/ul&&li&Android官方Training: &a href=&///?target=https%3A///training/index.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/t&/span&&span class=&invisible&&raining/index.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&ul&&li&这个其实是给App开发者看的. 但是里面也有不少关于系统机制的介绍, 值得细读.&/li&&/ul&&li&老罗的Android之旅: &a href=&///?target=http%3A//blog.csdn.net/luoshengyang& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/luoshengy&/span&&span class=&invisible&&ang&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&ul&&li&此老罗非彼老罗. 罗升阳老师的博客非常有营养, 基本可以作为&b&指引你开始阅读AOSP源码的教程&/b&. 你可以按照博客的时间顺序一篇篇挑需要的看.但这个系列的博客有些问题: &/li&&ul&&li&早期的博客是基于旧版本的A &/li&&li&大量的代码流程追踪. 读文章时你一定要清楚你在看的东西在整个系统处于什么样的位置.&/li&&/ul&&/ul&&li&Innost的专栏: &a href=&///?target=http%3A//blog.csdn.net/innost& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/innost&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&ul&&li&邓凡平老师也是为Android大牛, 博客同样很有营养. 但是不像罗升阳老师的那么系统. 更多的是一些技术点的深入探讨.&/li&&/ul&&li&Android Issues: &a href=&///?target=http%3A///p/android/issues/list& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/p/andro&/span&&span class=&invisible&&id/issues/list&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&ul&&li&Android官方Issue列表. 我在开发过程中发现过一些奇怪的bug, 最后发现这里基本都有记录. 当然你可以提一些新的, 有没有人改就是另外一回事了.&/li&&/ul&&li&Google: &a href=&///?target=https%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&ul&&li&一定要能流畅的使用这个工具. 大量的相关知识是没有人系统的总结的, 你需要自己搞定.&/li&&/ul&&/ul&&li&&b&其它&/b&&br&&/li&&ul&&li&代码组织&/li&&ul&&li&AOSP的编译单元不是和git项目一一对应的, 而是和Android.mk文件一一对应的. 善用mmm命令进行模块编译将节省你大量的时间.&/li&&/ul&&li&Binder&/li&&ul&&li&这是Android最基础的进程间通讯. 在Application和System services之间大量使用. 你不仅要知道AIDL如何使用, 也要知道如何手写Binder接口. 这对你理解Android的Application和System services如何交互有非常重要的作用. Binder如何实现的倒不必着急看.&/li&&/ul&&li&HAL&/li&&ul&&li&除非你对硬件特别感兴趣或者想去方案公司上班, 否则别花太多时间在这一层.&/li&&/ul&&li&CyanogenMod&/li&&ul&&li&这是一个基于AOSP的第三方Rom. 从这个项目的wiki里你能学到很多AOSP官方没有告诉你的东西. 比如如何支持Nexus以外的设备.&/li&&/ul&&li&DIA&/li&&ul&&li&这是一个Linux下画UML的工具, 能够帮你梳理看过的代码.&/li&&/ul&&li&XDA&/li&&ul&&li&&a href=&///?target=http%3A//www./& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/li&&li&这里有最新资讯和最有趣的论坛.&/li&&/ul&&li&想到了再补充.&/li&&/ul&&/ul&
由于工作需要大量修改framework代码, 在AOSP(Android Open Source Project)源码上花费了不少功夫, Application端和Services端都看和改了不少.如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行.…
&ol&&li& 工具:Android Studio&br&&/li&&li&查看源码方法: &a href=&///?target=http%3A////view-android-source-code-with-androidstudio/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&//view-android-source-code-with-androidstudio.html&i class=&icon-external&&&/i&&/a&&br&&/li&&li&看那一部分:&br&&/li&&ol&&li&Framework/base&/li&&li&Package/apps&/li&&li&art&/li&&li&external&br&&br&&/li&&/ol&&li&操作系统:推荐Linux,可以随时编译Android源码&/li&&li&测试机:推荐Nexus系列手机,编译源码后push进去可以随时验证。&/li&&/ol&
工具:Android Studio查看源码方法: 看那一部分:Framework/basePackage/appsartexternal操作系统:推荐Linux,可以随时编译Android源码测试机:推荐Nexus系列手…
已有帐号?
社交帐号登录
无法登录?
社交帐号登录大牛们是怎么阅读 Android 系统源码的_百度知道
大牛们是怎么阅读 Android 系统源码的
提问者采纳
 1,它才是你需要攻破的城;S架构,SharedBuffer读写控制。  完成这个静态UML,音频流的开始,一路下来。然后你才能发现HAL和Kernel一层层地剥离,路由的切换,Android源码分为功能实现上的纵向,C代码间遨游,我们公司一直是Windows+Linux+Samba的工作模式。借助Source Insight我总结了UI Java层的横向静态图,我发现了ViewRoot和WindowManager的身影,和UI有直接关系的就是最常见的Activity了吧;调用关系都无法有效查看。推荐Source Insight,纵向,setContentview这个方法很明显和UI有关,我就从它开始解剖,看到了各个层级的关系,SurfaceSession的控制和事务处理,沿着WM和WMS我发现了Surface,OpenGL ES的神笔马良,你可以很快找到你需要的继承关系,彪悍的SurfaceFlinger主宰一切,你可以从容在Java,共享内存的创建和使用。  譬如你需要研究音频系统的实现原理,我沿着draw函数。FrameBuffer和FrameBufferDevice的图像输出,C++.显然Eclipse不是阅读Android源码的好工具,它居然在Activity 创建时出现的DeCorView上画东西,不流畅。  2。在阅读源码时需要把握好着两个思路.Android的功能模块绝大部分是C&#47。一气呵成的完成了,这部分主要是C++的代码(这也是我坚定劝阻的放弃Eclipse的原因)。  我大概在三个月前阅读完Android UI系统的源码,在这个工具帮助下,你需要思路清晰地找到Server的位置。  我从Activity的创建入手,和功能拓展上的横向。  我需要先找一个开头,音频输入设备的开启,寻找Activity真正的创建位置,这是Android最复杂的部分。  3,我觉得我可以开始功能实现上追踪了,你才可以驾驭巨大数量的Android 源码,继承性关系&#47,你心里一定需要有这个层级关系,以及draw的函数.宏观上看,这两方面一结合。  顺便,没有之一,你发现Jni调用解码库:你需要从一个音乐的开始播放追踪,搜索低效
资深电脑人
其他类似问题
为您推荐:
android的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 android订餐系统源码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信