问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于学习安卓底层,懂得进

发布网友 发布时间:2022-04-23 07:17

我来回答

5个回答

热心网友 时间:2022-06-17 11:34

我干了3年Android sdk开发,觉得到了瓶劲没法更进一步,于是花了一年多点时间,大概摸到点门径。根据前辈的经验,Android底层完全入门需要两年。

先说下我的入门过程:
第零步,下载源码,我下的4.2的,框架层源码10G,内核2G多,ctags给框架层建的标签文件都有600M,当时让我有点震撼,用的vim+ctags+cscope来阅读,还算不错,架构挺清晰的。

第一步,我找到了一本好书《Android的设计与实现 第一卷》它讲了Android框架层的启动,初始化,服务框架初始化,Binder,消息循环,PackageManagerService,ActivityManagerService。据作者说后面会出讲UI子系统的第二卷,拭目以待。其实这本书看了几十页我就发现需要第二步的知识,否则看不下去,于是跳去第二步。

第二步,学习Linux系统编程,在看《Android的设计与实现》的时候我发现,框架层的Native部分,全是Linux编程。为了掌握这部分知识,我花了4个月学习了《Linux系统编程手册》(TLPI)这本1000多页的书,我以前是搞WIndows文件系统这块的,所以C语言还比较熟,TLPI的习题很有意思,量也比较大,坚持下来还是收获很多。

第三步,花了4个月学习了一些Linux内核的知识,看了LKD,PLKA看了一半多。越学越没底,觉得不懂得越来越多,不过这个也正常,只有靠慢慢磨,估计以后要不断的磨这块。

第四步,回头看Android源码,这次一口气看完了《Android的设计与实现 第一卷》,终于对框架层有了谱。同时真的数次把我看晕,前面看Linux内核源码都没这么晕,不断在Java层和Native层之间跳有点磨脑浆。其中我又觉得Java的基础没有打太牢,回去补了一个月的《Core Java》第八版。但是这书没有涉及UI子系统,于是又看了《Android内核剖析》

第五步,《Android内核剖析》(这本书实际上是讲框架层的,作者也是个搞嵌入式的,所以他在写框架层的时候文笔不太好,很罗嗦,不过还是有很多看点,到他后来写做ROM,玩开发板时估计是说到了他的本行,一下子遛起来了看得出还是挺有水平的,这本书知识有点旧毕竟讲的是2.3很多代码已经过时,但是作者很多点子很有参考价值)这本书讲UI子系统和按键/触摸消息处理系统还是很有分量的,尤其13章View绘制那里,结合源码研究很有收获。而后面他讲编译框架和ROM相关的东西都是挺宝贵的资料。

第六步,为了再补一下其他诸如电源管理模块等子系统的知识看了,《深入理解android》系列,个人认为这个系列看起来有点不太舒服,不过作为补充印证还是比较有价值。

第七步,《Android系统源代码情景分析》,罗升阳的源码分析大作,比《Android的设计与实现》分析得更细致,但缺点是涉及到模块比较少,选用的源码也比《Android的设计与实现》更旧一点。看完书后需要去研究作者的博客,东西挺多的,一定让你满意。

第八步,买块开发板自己玩。这步我还没走到,原因是我觉得我还差点准备知识。可能要再几个月,到时准备入块6410或者树莓派。

最后,由于我11年以前都是搞Windows这块的,所以对Linux知识不是很了解,不得已看了这么些书,如果是一直做Linux的人,很多步骤估计可以省掉了。直接上源码才是正道。

我本身做着移动GIS开发的工作,学框架层全是因为兴趣,但招聘平台Android框架层开发人员还是蛮有竞争力的有不少定制ROM,智能电视的工作都处于人才难求状态,毕竟有一定的门槛,现在各种ios培训,让奔着钱干开发的人纷纷涌入,而ios只能干sdk开发的缺点就暴露出来了,一堆新手老手,菜鸟大牛全挤在SDK开发这块,我觉得不太妙。 反观Android这边,虽然入门菜鸟没有搞ios来钱,但是可持续性很好,从sdk-》框架》驱动》内核这样干下去。干着干着发现自己渐渐变成了Linux开发者/嵌入式开发者的人也不少,新人,老手,菜鸟大牛各居其位,层次性很好。追问你回答的很认真,按照这种态度去学习早晚成大牛,学习了。谢谢

热心网友 时间:2022-06-17 11:35

1)Android是基于Linux的,嵌入式也有基于Linux的,不知道题主做嵌入式是否接触过。2)Android是开源的,所以我们可以看它的所有代码,读代码算是一个途径。3)麦子学院的“Android应用开发”是结合Android底层讲解的课程,可以学习一二。

热心网友 时间:2022-06-17 11:35

一楼答的太好了,留言备查!

热心网友 时间:2022-06-17 11:36

马克一下,居然过于简略?

热心网友 时间:2022-06-17 11:37

一楼真努力,收藏一下
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... android 底层是 c还是c++ android 底层语言是什么?如题 谢谢了 android底层库包含哪些 手机一般能升级几次安卓底层版本? Android底层是java,我可不可以理解为精通了java就精通了Android? Android系统的底层建立在Linux系统之上,该平台由哪4层组成? android的底层是基于什么系统 怎样腌制黄瓜好吃又脆配方 腌制黄瓜的配方最简单那种 腌黄瓜配料? 开奶茶店需要的设备,具体的,总结的要多少钱 开个奶茶店需要哪些设备,和具体哪些东西。 初次创业开奶茶店需要配备哪些设备? 奶茶店排行榜前十的店都有哪些? 开一个奶茶店,要投资多少? 开奶茶店,需要办理哪些证件? 新手怎么开一家奶茶店? 开一家盖乐星奶茶店都需要什么设备呢? 两个不同品牌的奶茶店门挨门好不好? 开个奶茶店大概需要多少钱? 不是说Android的底层是java么。怎么又出来个内核是Linux了?这两个有什么区别? android最基层还是用java??这句话对不??? 一个Android偏底层开发人员,对发展很迷茫,我该怎么发展 Android底层接口与驱动开发技术详解的内容介绍 安卓底层开发能做什么 Android应用开发和底层开发哪个更有前途? 怎么获得6位QQ号码? 如何才能免费申请到5位或6位数的QQ号? 申请qq号免费立即申请6位数135790 求巧克力与香子兰完整cg含18x 跪求巧克力与香子兰一代18x资源!谢谢! 大佬们求巧克力与香子兰的资源,谢谢摸摸啪 请问大佬有巧克力与香子兰2017年上映的由立花慎之介主演的百度网盘资源吗 巧克力与香子兰提取动画 求巧克力与香子兰1到3所有CG和GIF动图 跪求巧克力与香子兰cg,18r的那种 求 巧克力与香子兰 全cg百度云 求巧克力与香子兰的静态cg和动态cg!除了0部其他都可以,谢谢大佬 巧克力与香子兰动漫全集百度网盘 求巧克力与香子兰的动漫资源,一集一集的,不要OVA,剧场版