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

hfreeman2008 hfreeman2008     2022-10-27     415

关键词:

自我介绍

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

时间东家主要工作
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开发,负责一个叫工程模式的玩意。听说前面有一个同事负责这个,每天都被领导批评,直接跑路走人。这个工程模式,对应用,系统,驱动,kernel,都是有一定的要求,搞不定正常。但是对于我这个老鸟来说,没有问题,轻松hold,领导开会说这个工程模式终于稳定了,哈哈。无聊之下, 一不小心和一个新入职的驱动同事,一起学习入门驱动。
2020年6月----2021年6月深圳柔宇科技系统工程师的工作,公司非常好,技术有了质的进一步提升,我讨厌自己的技术提升,但是当你掌握了方法后,自己的技术会无时无刻提升的。但是一个小年青领导,非常讨厌我,对我的评价非常的低,给我打了个C,打破了我职场口碑一直不错的记录,伤心啊。在小年青和我谈绩效时,小年青先批评了我半个小时,我自己再为自己解释辩护了半个小时后,跑路走人。
2021年6月----2021年12月海信聚好看深圳研发中心系统工程师的工作,其公司国企文化鲜明,领导恶心变态,管理粗暴,以处罚批评为主,员工在他们眼里真不是人,pua人到极致,是我上班十年来最恶心的公司,噩梦般存在,真是一生黑啊。领导之变态,让我大涨见识。在青岛出差三个星期,一个星期每天加班到将近十二点,拼命的将一个功能赶出来,当月绩效考核直接扣了10分,理由是我请假没有通知领导,而事实是我和他说了,并且都安排好了我的工作,他回复说好,这操蛋的公司。再一次打破了我职场口碑不错的记录,直接n+1,含泪笑拿几W走人(人生第一次拿n+1)。在我从公司走的最后一分钟,领导还过来骗我说他不知道我被n+1,被我当着公司许多人的面恶心了他,我说你做人不行。我现在也做领导,领导对小弟,不是处处充满了欺骗,充满了pua,充满了打压,充满了否定,充满了甩锅,充满了阴谋。我现在对小弟,想的是让小弟不断的提升自己的技能,把自己的经验和心得倾囊相授,真的是希望小弟能青出于蓝而胜于蓝!
2022年2月----今深圳一个车载小公司高通系统组组长,带三个小弟,在公司攻坚克难的第一线。公司小,51个人,面试我的二位副总是以前康佳的同事,他们二个人在这个公司干了9年,当时就冲这一点,我就决定加入。公司氛围平和,节奏比较慢,不pua,老板规定晚上加班不能超过8:30,开发难度不高,平时午餐五菜一汤(免费),晚餐补15块,加班35块一小时,平时饮料免费自助,从海信来这边,有一种从地狱到天堂的感觉,爽

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

不简单啊不简单,工作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开发浅谈之inputmethodmanagerservice(代码片段)

来到新公司,负责了输入法的问题处理和一些输入法相关的功能开发,所以对输入法有了一点点了解,所以写了这篇文章来从系统的角度浅谈一下输入法。输入法管理服务的整体框架输入法的整件框架:输入法管... 查看详情

android开发浅谈之packagemanagerservice(pkms)(代码片段)

本文基于Android10.0主要从以下几个方面着手:PKMS启动PKMS安装APKPKMS卸载APKPKMS启动这里我简单的将其分为以下几个步骤:1.SystemServer通过PKMS的main方法启动PKMS2.PKMS构造方法中初始化Settings3.扫描各个系统目录下APP相关信息1.Sys... 查看详情

android开发浅谈之packagemanagerservice(pkms)(代码片段)

本文基于Android10.0主要从以下几个方面着手:PKMS启动PKMS安装APKPKMS卸载APKPKMS启动这里我简单的将其分为以下几个步骤:1.SystemServer通过PKMS的main方法启动PKMS2.PKMS构造方法中初始化Settings3.扫描各个系统目录下APP相关信息1.Sys... 查看详情

写在前面——浅谈程序开发

...统专业的学生,也不知道在什么时候就决定以计算机软件开发为工作方向,起初我给自己的理由是我觉得跟计算机打交道比跟人打交道相对容易,程序出Bug会有提示信息,而有些人会不表于色。随着我加入工作逐步积累一定的社... 查看详情

android开发浅谈之inputmethodmanagerservice(代码片段)

...应用–InputMethodService我们先讨论输入法应用部分:以android内置的输入法LatinIME为例,先看LatinIME输入的AndroidManifest.xml对其定义:<serviceandroid:name="LatinIME"android:label="@st 查看详情

浅谈之merge-sort-join

初接触执行计划,做练习时执行sql(如图一)图一:查看其执行计划(如图二)图二:看到上面这个执行计划用到mergesortjoin(排序合并联合查询),刚开始没有理解为什么这条执行计划里还有sortjoin,emp表里deptno字段不是已经有... 查看详情

qt浅谈之二:钟表(时分秒针),qsplitter实现自由伸缩滑动窗口good

http://blog.csdn.net/taiyang1987912/article/details/30272105http://blog.csdn.net/taiyang1987912/article/details/50717179http://blog.csdn.net/taiyang1987912/article/category/2314763 查看详情

qt浅谈之二十一log调试日志

一、简单介绍     近期因调试code时,想了解程序的流程,但苦于没有一个简易的日志记录,不停使用qDebug打印输出,而终于提交代码时得去多次删除信息打印,有时还会出现新改动的代码分不清是哪些部分。... 查看详情

设计模式浅谈之----设计模式简介

  1.何为设计模式设计模式是一个通过定义、使用和测试去解决特定问题的方法,并且由于设计模式是在面向对象之后为人所知的,基本思想与面向对象不可分割。在软件工程中,设计模式是一般只在给定条件下会重复性... 查看详情

qt浅谈之四十二钟表摆动显示百分比

一、简介       Qt下利用定时器实现指针指示百分比的钟摆的动态显示效果,可以适用于显示百分比或进度条的进度或时间的刻度值(在圆形进度条上的一种改进)。效果如下:二、详解1、代码(1)Dashb... 查看详情

写在前面的话

来自偏远小渔村的蒟蒻初二OIer,sb一个,比赛不是考挂就是baoling(似乎到现在最好的成绩是市选爆零??),就这样一个蒟蒻渣渣开始写blogs,水一水题解吧。。。   查看详情

写在前面的话

本人是今年刚开始接触linux系统,为了记录自己的学习过程,也是从小白开始历练,把所学所知的关于linux的知识记录下来,如果有写错了的地方,或者有什么意见和建议的话,欢迎和我沟通,联系在此感谢大家了本文出自“linux... 查看详情

llvm每日谈之五十五浅谈对pass的错误认知及其原因

Pass作为LLVM的一个重要的组成部分,在LLVMIR层面和LLVMBackend层面都发挥了重要的作用。很多LLVM的使用者容易将Pass理解为LLVMIR层面的analysis和transform,而忽略了Pass在LLVMBackend层面的作用。而实际上,Pass在LLVMBackend层面发... 查看详情

软件项目管理写在前面的话和time-controller团队项目介绍

...是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件。作为软件工程专业的一名学生,尤其是在一所“重理工,轻管理”的学校求学,认真思考本专业与计算机专业的区别,... 查看详情

python实例浅谈之五python守护进程和脚本单例运行(代码片段)

一、简介守护进程最重要的特性是后台运行;它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d... 查看详情

生物特征识别:写在前面的话

近几年随着深度学习技术(deeplearning)的发展和推广,在某些领域突破了传统算法的瓶颈,尤其是在计算机视觉方向,自从imagenet2012上AlexNet大杀四方后,短短几年时间,深度学习已经几乎占据了三个视觉顶会(ECCV,CVPR,ICCV)... 查看详情

数据库基础——写在前面的话

写数据库相关的博客,计划很久了,一个是发现测试教程网,这块是缺失的,另一个是我对数据库本身有着一些特殊的感情,谁叫上大学那会儿,计算机方面的课程,数据库学的是最好的呢!虽然平时也会有记笔记的习惯,但都... 查看详情

写在正经内容前面的不正经的话

  先自我介绍一下,刚刚从西安某工大本科毕业,学的是烧锅炉(开个玩笑~),9月份开学要到福建某大三本读图像处理和计算机视觉方向的研究生。  本科学的是独树一帜的专业,因为不喜欢西安这座城市,也有些反感军... 查看详情