我的编程空间,编程开发者的网络收藏夹
学习永远不晚

我是如何从Android开发转framework开发的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

我是如何从Android开发转framework开发的

转framework开发快一年了,一直都想写一篇文章,分享一下自己的工作心得,也让做应用开发的小伙伴对framework开发有一定的了解,但因为种种原因耽搁了,今天就趁着工作闲暇之余,聊聊我从应用开发转framework开发的心路历程,自己也是刚开始学着写文章,文笔不太好,请见谅_

本人履历

一个混迹Android圈7年的小菜鸟

做过应用开发,996那种

做过Android讲师,在小白面前吹牛逼那种

做过技术支持,全国到处跑那种

越来越卷的应用开发

曾经跟所有Androider一样,在应用开发领域为所欲为,徒手掰Handler,脚踩ViewPager,硬刚ListView,但随着时间的推移,技术的更新迭代,ViewPager2,RecyclerView,插件化,组件化,Kotlin,jetpack,mvvm,flutter,compose,简直没完没了了,随着年龄越大,越来越感到无力,或许未来某一天学不动了,真的会被后浪给淘汰,于是,第一次真正思考起自己的职业规划,要不要转行呢,可是转行又能做什么呢,别的圈子也卷啊

应用开发向framework开发过渡

某天,我在某聘上看到现在公司招聘Android开发岗,以为是应用开发,就电话聊了聊,聊了一个多小时才知道是做framework开发,起初我理解的framework开发就是定制系统,类似MIUI之类的,但是聊完之后我才知道,其实framework也有很多方向,毕竟Android源码那么庞大,根据模块划分有:

  • wifi/bt-wifi和bluetooth
  • multimedia-多媒体
  • telephony-电话

根据业务划分有:

  • TV-电视
  • Iot-物联网
  • Auto-车载

比起应用层层出不穷的新技术,framework层就显得十分的成熟稳重,没有太多的变化,核心技术一直都是那些东西,能够把其中一个方向给研究透彻就已经很牛掰了,想想之前卷到天际的应用开发,顿时来了兴趣,于是毅然决然辞职来到现在的公司做framework开发。

来到这里之后,真的是神仙打架,全是一群各个领域的大佬,只想说,被带飞的感觉真好。刚来就从framework最基础的东西开始学起,搭建framework开发环境,主要包括:

  • Android Studio:查阅源码
  • git:拉取/上传代码
  • 编译源码所需要的环境,如openjdk、python、 libssl-dev、audit2allow、m4等
  • 远程工具向日葵/NoMachine:因为编译源码需要在Linux环境下,所以每个人都有两台主机,Windows和Ubuntu,一般都是windows远程控制Ubuntu
  • 其他一些辅助工具

搭建好开发环境后,就可以开始从公司服务器下载Android源码,编译源码,刷机,其中最耗时的就是编译源码,第一次编译可能得花三四个小时,不同版本的Android源码编译时间不一样,一般版本越高,编译时间越长,正所谓,一杯茶,一包烟,一个bug改一天,毫不夸张,就这整个流程下来,我花了整整一周,第一次开周会的时候,同事的周报我都看不懂,都是一些framework的问题,但转过头想想以后我也能解决这些问题,顿时感觉越来越兴奋。

学完刷完机之后,开始尝试在源码里面加入自己的代码,看它会不会生效,最简单的就是加个Log日志,然后在adb logcat中看是否打印出来了,这里说明一下,查看日志不是在Android Studio中查看,AS只用于查看源码,不作为调试工具,调试都是使用adb相关工具。

自己的代码能够生效之后,就开始着手处理一些简单的问题了,起初都是处理java层的一些bug,并不涉及到native层代码,比如隐藏设置里面的一些不常用的设置选项,修复关于设备里面IMEI号显示不正确的问题等等,虽然很简单,但是对于刚入门的我来说也是很懵逼的,UI问题还好,可以根据文案,全局搜索,定位到代码处,非UI问题,那就得搞清楚Android系统的执行流程了,这就需要先了解Android源码的目录结构,每个目录都是干啥的,就跟app项目结构一样,然后要去梳理Android的启动流程,核心的一些服务和进程,PMS,AMS,WMS等等之类,进程之间的通信方式,这又需要对Linux有一定的了解,了解这些之后你才知道这个bug可能跟什么模块有关系,这就缩小问题定位范围了,然后到对应的模块下面去进一步查找,好在公司有很丰富的学习资源,需要了解什么知识点都可以在资源库里查得到,这节省了很多时间,不得不说,大公司确实不一样。

经过一两个月时间的熟悉之后,渐渐的对framework开发流程越发娴熟,很多简单的问题都能很快解决掉,但是碰到那种很怪异的问题,就很费时间,比如插入大容量SD卡黑屏,往SD卡拷贝大文件会卡顿,甚至出现anr,framework最害怕碰到的就是anr,因为anr日志给出的报错信息一般都不是根本原因,多半是底层出现了什么问题才导致上层出错,这种问题,就算自己处理十天半个月都不一样搞得定,最后都是请其他岗位的同事协助解决。

framework开发心得

时至今日,可以说已经对framework开发有了比较全面的认识,但仍然掩盖不了自己是个菜鸟的事实,很多东西都需要去学习,比如linux,jni,c/c++,IPC,aidl,hidl,adb shell等等,目前正在恶补这些东西,正应了那句话,学得越多,越觉得自己是个菜鸡。但是从另外一个角度来看,技术的不足恰好激发了自己的学习欲望,不断鞭策自己向上进步,慢慢的对未来的焦虑也逐渐减少,想想之前的自己,再看看现在的自己,照镜子都觉得自己那么帅,每天进步一点,量变引起质变,这是我目前抱有的信念。

To App Developer

静下思考,认真规划,戒骄戒躁,步步落地。如果你不想卷应用开发了,framework开发可能是你可以选择的一条不归路。有兴趣的小伙伴可以关注我,我整理了一份framework学习路线和方法,共大家参考学习。

革命尚未成功,同志仍需努力,共勉!

来源地址:https://blog.csdn.net/u013936727/article/details/127876172

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

我是如何从Android开发转framework开发的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

我是如何从Android开发转framework开发的

转framework开发快一年了,一直都想写一篇文章,分享一下自己的工作心得,也让做应用开发的小伙伴对framework开发有一定的了解,但因为种种原因耽搁了,今天就趁着工作闲暇之余,聊聊我从应用开发转framework开发的心路历程,自己
2023-08-16

我为何从测试转测试开发,并坚持了10年?

入行测试开发,马上就要10年了。创业公司待过,大公司也待过,工作这一路走来,一些心得,转变,职场体会,早就想写出来分享一下。这个历程包含了技术的提升,工程师的素养和对这个行业的点滴感悟。自动化测试vs测试开发记得刚入行那会,我的title是
2023-06-04

Android到IOS开发的转换

很早想入手ios开发,但是一直没有机会,个人没有水果机器,上个公司上班的那台mac mini虽然在我身边,灰都有一层了,但是一直没有机会开机学习下,因为事多,自上一篇文章后,离职后,新公司给配备了mac pro,正好满足了自己都心愿,开始水
2022-06-06

我是如何从测试开发做到年薪50万的?揭秘测试开发工程师成神之路

入行测开,马上就要5年了。创业公司待过,大公司也待过,工作这一路走来,一些心得,转变,职场体会,早就想写出来分享一下。这个历程包含了技术的提升,工程师的素养和对这个行业的点滴感悟。自动化测试vs测试开发记得刚入行那会,我的title是自动化
2023-06-04

Android开发sensor旋转屏问题如何解决

这篇文章主要讲解了“Android开发sensor旋转屏问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android开发sensor旋转屏问题如何解决”吧!一、查询 activi
2023-07-05

Android如何赢得开发者?

我们听到很多关于Android大受欢迎的消息;从市场份额上说,它明显超越了众多竞争对手,比如苹果的iOS。不过,尽管倍受追捧,对消费者也很有吸引力, Android似乎还是失去了一部分人的支持,比如开发者,而这部分支持对OS取得成功至关重要
2022-06-06

Lambda如何让从根本上改变我们开发Java程序的方式

本篇文章给大家分享的是有关Lambda如何让从根本上改变我们开发Java程序的方式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。当今世界主流编程语言无不吸纳强大的闭包概念,但有
2023-06-17

Android开发技巧之我的菜单我做主(自定义菜单)

Android SDK本身提供了一种默认创建菜单的机制。但通过这种机制创建的菜单虽然从功能上很完备,但在界面效果上实在是有点“土”。对于一个拥有绚丽界面的程序配上一个有点“土”的菜单,会使用户感觉很怪,甚至会使绚丽的界面大打折扣。
2022-06-06

Android开发中如何生成excel

这篇文章主要介绍了Android开发中如何生成excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在android中生成excel表并存到本地。先看下生成后的效果图:初始
2023-05-30

Android开发中AsmClassVisitorFactory如何使用

这篇文章主要讲解了“Android开发中AsmClassVisitorFactory如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android开发中AsmClassVisitorF
2023-07-02

android开发者模式如何关闭及开启

要关闭或开启Android设备的开发者模式,可以按照以下步骤操作:关闭开发者模式:1. 打开设备的设置菜单。2. 滚动至底部,找到“关于手机”或“关于设备”。3. 在关于手机/设备菜单中,找到“版本号”或“软件信息”。4. 连续点击版本号/
2023-10-07

如何搭建Android Studio开发环境

这篇文章将为大家详细讲解有关如何搭建Android Studio开发环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、安装Android Studio笔者用的计算机配置如下:Mac下安装Android
2023-05-30

android开发者模式如何关闭

要关闭Android开发者模式,可以按照以下步骤操作:打开手机的设置菜单。滚动到底部,找到“关于手机”或类似的选项,点击进入。在“关于手机”菜单中,找到“版本号”或类似的选项,连续点击7次。返回到设置菜单,现在你将在菜单列表中看到“开
2023-10-25

PopupWindow如何在Android开发中使用

这篇文章给大家介绍PopupWindow如何在Android开发中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在Android中有很多级别的Window,不同级别的Window按照z-index方向分布。下面看看
2023-05-31

Shell如何在Android 开发中使用

本篇文章为大家展示了Shell如何在Android 开发中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Shell核心代码import java.io.BufferedReader;import
2023-05-31

AppWidget如何在Android开发中使用

这期内容当中小编将会给大家带来有关AppWidget如何在Android开发中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是AppWidgetAppWidget 即桌面小部件,也叫桌面控件,就是
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录