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

这篇具有很好参考价值的文章主要介绍了我是如何从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://www.toymoban.com/news/detail-786608.html

到了这里,关于我是如何从Android开发转framework开发的的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android移动应用开发的学习路线

    Android移动应用开发的学习路线。以下是一个基本的学习路线,供你参考: 1. Java基础 学习Java的基本语法和面向对象编程(OOP)的概念 了解Java的数据类型、变量和常量 学习控制结构(如条件语句、循环语句)和函数 2. Android基础 了解Android平台的基本概念和架构 学习Android的

    2024年02月11日
    浏览(53)
  • Android应用开发(7)按键(Button)

    Android应用开发学习笔记——目录索引 本章介绍按钮(Button)控件的常见用法,结合前面Android应用开发(5)文本显示(TextView)介绍按钮(Button)监听点击和长按事件,禁用和启用等。 参考google官网:https://developer.android.com/reference/android/widget/Button 按钮控件Button由TextView派生

    2024年02月05日
    浏览(54)
  • 5G到来未来五年,做纯应用的Android开发者如何学习通过音视频破局?附《578页NDK七大模块学习宝典》(1)

    “只懂应用层,目前越来越多的企业要求音视频技术,我该怎么办?” “到底该不该学习音视频,怎么抉择?\\\" “想从事音视频开发,该怎么入门?如何进阶 ?” 如果你有这样的问题,从侧面反映了你是一个积极向上,想不断努力来提升自己的人。 先从一个简单的问题聊起

    2024年04月23日
    浏览(63)
  • Android应用开发(6)TextView进阶用法

     Android应用开发学习笔记——目录索引 上一章Android应用开发(5)文本视图(TextView)介绍了文本视图(TextView)设置文本内容、设置文本大小、设置文本显示颜色。 TextView是最基础的文本显示控件,常用的基本属性和设置方法有: XML中的属性 TextView类的设置方法 说明 andro

    2024年02月14日
    浏览(48)
  • Android应用开发(4)视图布局基本属性

    Android应用开发学习笔记——目录索引 本章介绍视图(View)的基本概念及其用法,包括:如何设置视图的宽度和高度,如何设置视图的外部间距和内部间距,如何设置视图的外部对齐方式和内部对齐方式等。 在Android中,什么是视图(View)?View是Android中所有控件的基类,不

    2024年02月03日
    浏览(46)
  • 移动应用开发环境搭建Android Studio

    记得提前开启电脑虚拟化支持,具体方法可自行百度 查看是否启用虚拟化 JDK安装与卸载 由于Andriod开发使用的语言是javaKotlin,这里使用的是java语言所以需要先安装java的开发环境 所有开发 Android 应用程序需要的工具都是开源的,并且可以从互联网上下载 Android Studio 是谷歌推

    2023年04月08日
    浏览(71)
  • 全网最全Android compose开发应用指南

    Jetpack Compose 是一款基于Kotlin API,重新定义Android布局的一套框架。它可简化并加快 Android 上的界面开发。使用更少的代码、强大的工具和直观的 Kotlin API,快速让应用生动而精彩。对于开发者而言最直观的就是 节省开发时长,减少包体积,提高应用性能 。 如果你是新项目 。

    2023年04月10日
    浏览(53)
  • Android 平台应用软件开发(学习中)

    1,LinearLayout(线性布局),RelativeLayout(相对布局),FrameLayout(帧布局),AbsoluteLayout(绝对布局),TableLayout(表格布局)。 2,线性布局中的控件属性说明 ①android:background,设置UI控件的背景,其值可以是资源文件夹中的图片或者是颜色的十六进制值。 ②android:orientation,该属性是线性布局

    2024年02月04日
    浏览(46)
  • 超简单演示Android地图开发应用实例

    手机地图开发应用广泛,本实例演示了在手机上显示各种地图的方法。比如3D矢量地图、卫星地图、交通地图、夜景地图等在手机上的显示。可以根据手势自由做地图缩放,地图旋转等操作。代码简洁、实用,可以帮助你快速上手地图开发。 一、实现效果图: 二、实现过程

    2024年02月11日
    浏览(43)
  • Android应用开发入门:从Android Studio环境设置到Java编程基础

    目录 介绍 步骤一:设置Android Studio环境 步骤二:了解Android Studio界面

    2024年02月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包