android开发浅谈之写在前面的话

Posted hfreeman2008

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发浅谈之写在前面的话相关的知识,希望对你有一定的参考价值。

自我介绍

先简单的介绍一下我的主要工作经历吧:

时间东家主要工作
2011年8月深圳大学毕业那是安卓开始崛起的前夜,自己整上午整下午的看网上的新品手机,基本上注定了自己从事手机相关的职业选择了
2011年8月----2013年8月深圳康佳通信科技android app开发 刚入行,有点怕怕
2013年8月----2014年12月深圳鸿宇顺科技android app开发,开始发现自己有的工作是可以胜任的
2015年1月----2018年3月深圳天珑移动app开发,gms认证,订单交付,开始有点系统工程师的影子,也开始有点漂了,想挑战一下自己,走一条最难的路
2015年3月----2018年5月深圳天道日新科技软件部门负责人,那时觉得自己非常牛,想飞起来。主要是做PPT(话说哥的PPT可以碾压绝大部门的人),给领导吹水,给客户吹水,工作强度和压力非常的大
2018年5月----2019年9月深圳瑞高智能设备app开发,部分系统工程师的工作,做写代码的小弟其实轻松多了
2019年9月----2020年5月深圳小辣椒科技android app开发 一不小心和一个新入职的驱动同事,一起学习入门驱动
2020年6月----今深圳柔宇科技app开发,部分系统工程师的工作,公司非常好,技术有了质的进一步提升,但是领导非常讨厌我,对我的评价非常的低,打破了我职场口碑一直不错的记录,伤心啊。

上面列的这些,其实只是我的主要工作经历,还有一些有意思的但是极其短暂的工作,以后有机会和大家分享。

不简单啊不简单,工作9年,能换这么多家公司,不容易。

我们的字典里有一个字可以完美的概括上面的这9年,那就是------“浪”。

那以我的工作经历,换了这么多公司,有得有失吧。

好处的话:

  • 第一个是涨工资快;
  • 第二个是每换一个公司,都会在意想不到的方向和领域(如技术,吹水等)得到提升;
  • 第三个是会成为一个技术的杂家;
  • 第四个是人生阅历更丰富,人生经历更精彩。每次换公司,都觉得自己明显比别人眼界和格局要更高一个层次,可能是自己见过更多的人,经历过更多的事,更成熟更滑了吧。

同样,不好的影响也是非常的大:

  • 第一个是在技术层面没有在特定的垂直方向积累;
  • 第二个是在职业层面没有在一个公司有持续的发展进步,这个非常的致命;

导致每换一个公司,所有的工作,人脉,资源都得重新从0开始,去任何一家公司都得喊别人哥,包括技术比你菜,年龄比你小,性格比你偏,人品比你恶心的所有人。

  • 第三个是自己的简历会显的特别的不稳定,大公司基本上无缘了,因为HR那关过不了;

这个让我更心痛,工作这么久,还没有去过top大厂上班,这是我的一个痛啊。本来前一阵子更新简历,oppo二轮技术面试都过了,在第三轮HR面,直接拒了,让我心痛啊。

写android开发浅谈系列文章的目标

上面写了这么多我的简历,就可以看出,我是先从app开发,一步一步进阶到framework开发的。

而事实上,此android开发浅谈系列的文章,一开始就是我自己在开发时,看到别人的博客觉得有用有意思的文章自己对比来学习做笔记的,到后面我总结自己负责的模块的开发笔记,这样一点一点发了一年时间积累下来的。

此android开发浅谈系列的文章的目地就只有一个:
指导app开发如何进阶到framework 核心服务开发

借用袁辉辉的android分层图,图中粉红方框中,从app开发进阶到framework的System Server的服务(如ams,wms,pms,imms等),就是此文章带你进阶的点。

写android开发浅谈系列文章的初衷

你们是不是从app开发进阶到framework开发时是不是会有下面当年我面临的的困惑:

  • 1.源码太多,如何下手呢?

您看网上说ams,wms,pms特别重要,也想学习ams,wms,pms。当你打开源码后,

源码文件名代码行数
ActivityManagerService.java19647行
WindowManagerService.java8820行
PackageManagerService.java26354行

好吧,当你恶心自己强行看完一个1W,2W行的源码后,是不是感觉到深深的绝望,感觉自己是个废物,自己的智商看来是不行,应该是驾驭不了系统framework开发的源码,冲破不了这一层技术,还不如回去打王者,吃个鸡,其实游戏比这个要香多了。

所以这个android开发浅谈系列文章的会给你如何在这个海量代码中如何定位到自己需要关注的逻辑,从而不迷路,不迷茫提供一些思路。

  • 2.为什么会只有极少量的系统日志?

我们在app开发时,经常会打印出自己需要的日志信息,这样就可以明白代码的运行,定位到问题。但是我们在正常看日志时,会发现只有极少量的日志。缺少日志,我们就缺少了了解系统的钥匙。

所以这个android开发浅谈系列文章的会给提示你,framework的服务中默认日志信息是关闭的,你是需要主动打开日志开关,从而来了解系统是如何工作的。

  • 3.有没有其他查看系统信息的手段?

当你打开系统的对应服务的日志开关后,你还是会发现,现有的日志信息多而杂,有没有其他的查看系统信息的手段呢?

所以这个android开发浅谈系列文章的会从系统的dump信息的角度,来和你一起窥测系统的信息,从而来了解系统,定位问题。并且系统的dump信息还不需要编译源码,实时的得到,实在是查看系统的一个利器。

  • 4.如何查看接口的调用逻辑?

framework的服务一般都是代码量特别多,方法特别多,那我们如何知道这些接口的调用逻辑呢?当然了,你可以简单粗暴的全部加上日志信息,但是这个方法肯定不是最优的。

所以这个android开发浅谈系列文章的会有一些查看接口调用逻辑的手段,你可以自己慢慢去发现。

  • 5.跨进程应用的日志信息,如果关联贯通呢?

framework的服务一般都是system server使用Binder的方式,跨进程与上层应用进行通信。那我们如何通过日志信息关联贯通framework的system server与上层应用之间的通信逻辑呢?

所以这个android开发浅谈系列文章的会有一些我的经验,希望你也可以体会到。

  • 5.不同android软件版本,接口调整和变换了,我们如何重新梳理系统的流程呢?

对于framework的学习,我们一般都是在网上查看对应的博客资料。但是经常会发现,对应博客资料的android版本是A版本,而我们手上的开发代码版本是B版本,博客资料中的接口我们在我们的代码中找不到,这时会不会有一种game over的感觉,因为你会对不上相应的接口逻辑,导致学习和梳理无法进行下去。

所以这个android开发浅谈系列文章的会告诉读者,我是如何在哪里,如何定位代码逻辑的方式,从而可以让读者不管在android什么版本上,无论接口如何变化,都可以自己定位代码逻辑,希望你也可以get到。

分享一个小故事

最后,分享一个兄弟我读研时一个老师讲的一个小故事,让我记到现在。

故事是这样的:
有一个小哥,我们就喊他张三吧。张三这哥们,他有一个二层的小楼,小楼从一层到二层只有一个出入口,高度大概有个8米吧,正常人肯定是不能从一层跳上8米的二层的,人们只有借用一个8米的木梯子,才可以从小楼的一层爬到二层。
一天,这个小哥张三他使用那个8米的木梯子从一楼爬到二楼,他让另外一个人把这个8米的木梯子收起来,然后对别人说,兄弟们,我直接从一楼跳到这8米高的二楼,你们说我是不是能为所不能,厉不厉害,牛不牛,是不是江湖中传说的大神。然后围观的不明真相的白痴群众都拍手叫牛,技术大神,你真厉害,竟然可以从一楼直接跳到这8米高的二楼,我们这种渣渣做不到,请接受我们的膝盖吧。

哈哈,这就是一个张三小哥的封神之路,搞笑但是又非常的真实。

许多你看起来非常牛的人,所谓的大神,我们感觉他们好像神仙一样,高来高往,怎么这都可以,其实原因非常的简单,他们把他们如何实现的过程隐藏了,我们直接看到结果,才会误导我们,如果我们看到他爬木梯子时的那个肥肥的并不灵活的向上爬的身体,奶奶的拿了一小段后还要休息一下,8米的样子还大汗淋漓,气喘吁吁的狼狈样子,我们相信我们会爬的比他好,比他快,我们其实也是可以成为他这样的大神的。

日光下没有什么新鲜事,关键是我们要找到那个被人隐藏了木梯子,仅此而已。

希望这个android开发浅谈系列文章,会让你找到进阶framework开发的那个被人隐藏了木梯子。

以上是关于android开发浅谈之写在前面的话的主要内容,如果未能解决你的问题,请参考以下文章

android开发浅谈之写在前面的话

android开发浅谈之写在前面的话

提纲挈领webrtc音频处理算法之写在前面的话

android开发浅谈之InputMethodManagerService

android开发浅谈之PackageManagerService(pkms)

android开发浅谈之InputMethodManagerService