news 2026/9/8 19:27:20

应用(客户端)开发、框架开发、驱动/系统开发的关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
应用(客户端)开发、框架开发、驱动/系统开发的关系

最近找工作,好多猎头给我推荐的岗位跟我几乎完全不匹配,有鉴于此,特作此文,以供诸猎头参考。

编程语言:打个比方,我想写一本书,可以用中文,也可以用英文,还可以用俄文,等等。具体到做软件上,也有各种编程语言,目前主流的有C、C++、Java、kotlin、swift、Python、Go等。使用这种编程语言写出代码,机器就可以识别出让它做什么,各项功能也就跑起来了。每种语言都有自己的优势和劣势,都有自己的适用场景,所以没有哪一种语言是万能的。它们有的适合去驱动硬件工作,有的适合在浏览器里展示网页,等等。

Kotlin: 一种编程语言,目前主要用于编写Android应用软件。以前编写Android应用软件全都是用的Java语言,后来Android官方推出了Kotlin语言,作为Android应用开发的官方推荐语言。目前Java、Kotlin都可以开发Android应用,但大体趋势是Kotlin将会越来越占主流。嗯……其实已经是主流了。

Flutter: 一种跨平台的交互界面实现工具、应用开发方案。采用Dart编程语言。以前,在ios、android、windows、linux、网页等各平台上实现同一功能(例如,都是登录功能),需要在各平台上各自去实现一遍界面和交互,因为每个平台上的实现方式都不一样,所使用的编程语言也不一样,而使用Flutter可以做到使用Flutter实现一遍就可以在多种平台上都通用,这样就省去了很多精力和人力成本。一般互联网公司使用Flutter较多,而硬件公司相对来说就少一些,例如,Android手机厂商自己的软件,可能只会安装在自家手机上,不会在iPhone上安装,也就不用考虑跨平台的问题。既然有跨平台方案了,那么原生方案是不是就没必要存在了?不是的。跨平台是有代价的,跨平台的原理其实就是多加一层翻译,打个比方,跟英国人打交道就说英语,跟俄国人打交道就说俄语,这就相当于原生方案,后来有人发明了一种新语言(相当于跨平台),每说一句新语言,就需要多个翻译——面向英国人,就需要一个既懂新语言又懂英语的人当翻译,面向俄国人就需要一个既懂新语言又懂俄语的人当翻译——他确实只需要说一次,就能让英国人、俄国人都懂了,但是代价就是多出来了几个翻译。总得来说,跨平台方案无法像原生那样精确、高性能、及时(新特性出来后,需要跨平台来适配后才能实现跨平台),也无法应对所有场景,但是他毕竟能在节省人力和资源的情况下做出一个“差不多”的东西出来……

React Native: 一种与Flutter类似的东西。与Flutter都是目前比较流行的跨平台实现方案。

应用开发(通常也叫客户端开发):日常手机上用的微信、QQ、美团、滴滴等这些APP都属于应用软件,可以简单理解为你可以在各手机厂家(含苹果)的应用商店里搜到的软件。从事应用开发的人最多。

Android Framework(框架层):该层开发语言也是Java,有些情况可能需要C/C++。android应用开发通常只涉及应用层的东西,而应用层的基础就是Framework,打个比方,Android应用层是省长,Framework就是市长,省长干活要调用市长,市长干活又要调用县长,一层层往下传下去,越往底下,就越接近真正干活的人,而最上面得到的结果都是底下反馈上去的。在大公司,Framework会有专门的Framework开发工程师。Framework可以认为是Android系统的一部分,通常需要自己修改(或者叫定制)Android系统的厂商才会需要Framework工程师,因为纯软件厂商无法(没有权限)修改Framework,打个比方,腾讯是没有办法修改vivo手机的Android系统的。但是熟悉Framework就可以更清晰地梳理清Android应用运行的机制,甚至想方设法绕过一些限制或根据framework的原理找到一些实现需求的方案,从而编写出更加优化的应用。部分人员可以兼通Android应用开发和Framework开发。

Linux: 和Windows、Mac OS一样,都是一种操作系统。Windows、MacOS 都是闭源的,也就是它们的代码是不公开的,分别由且只能由微软、苹果公司去修改,而Linux是开源的,任何公司和个人都可以拿去修改,所以很多硬件厂商会使用Linux驱动他们的硬件。Linux的开发语言是C/C++。顺便说一句,Android系统就是基于Linux的内核搭建起来的。可以简单理解为Android系统最基础、最核心的东西都是用的Linux的。

驱动开发、系统开发、底层软件开发:驱动、系统、kernel(即内核)都是比Framework更靠底下的一层。一般这个职位,C、C++编程语言是必需技能,因为这几项都需要用这两种语言去实现。这个职位与Android应用开发基本完全不搭边,很少有人会兼通。如果是硬件厂家(典型为华米OV、大疆等)招聘WiFi、蓝牙、相机等相关的开发,大概率是对应着这一层。这类岗位的招聘里可能会较高频出现的词汇:驱动、底层、kernel、底层软件、HAL、C/C++、系统开发。如果搞过Linux系统开发,那么搞Android系统开发就会很有优势。广义上讲,Framework开发也可以归到系统开发里。

硬件是驱动和系统的基础,系统是框架的基础,而框架又是应用的基础。以手机为例,每款手机采用的芯片不同,这就需要针对这款芯片做驱动和系统适配,这样才能驱动这块芯片跑起来,而驱动和系统改了,那框架也可能受到影响(例如支持了一项新功能,那就需要框架里也适配,这样应用层才能调用框架层,框架层再调用系统,系统驱动硬件),需要框架也跟着适配,框架修改就又导致应用也可能跟着适配,但是由于技术实现的问题,这种影响是逐级递减的,也就是说硬件变动了,但是这个影响传到应用层的时候可能已经毫无影响了(仅供非技术人员粗略理解,实际情况多种多样),典型场景:你换了一个新手机,把旧手机上微信的apk安装到新手机上,微信仍然可以正常使用。所以软件厂商就会把精力集中到应用(客户端)开发,硬件厂商则需要各层都关注。

Windows应用开发、Linux应用开发:和Android应用开发也不是同一个东西,所需的技术也不一样,它们是两个不同的岗位。以QQ为例,你去QQ主页,可以发现有ios版、Android版、Windows版、Linux版、MacOS版等不同操作系统上使用的QQ可供下载,其中的Windows版QQ就属于Windows应用。同理,Android应用开发、ios应用开发也是两个不同的职位,尽管有些人确实两种技能都会

JNI:这也是目前招聘需求里出现比较多的一个词,即 Java Native Interface。多见于硬件厂商的招聘。如果只是单纯地做一个与硬件无关的Android APP,例如,一个发送文件的APP,那通常只需要使用Java或Kotlin语言就可以做出来了,但是如果涉及到硬件,例如,我要在一个智能POS机上做出一个APP,完成收款、转账等功能,需要控制POS机的硬件做一些操作(例如,在某个步骤需要启动POS机上的安全芯片做一个校验,或让POS机打印出一张纸质转账单),那Java和Kotlin就无能为力了,因为这两种语言无法驱动硬件,此时,可以驱动硬件工作的 C/C++ 语言就要上场了,于是,便出现了这样的场景:Java/Kotlin代码 调用 C/C++ 代码去驱动硬件工作,工作完成后 C/C++ 代码又要给 Java/Kotlin 回复一个结果 —— 两种不同的编程语言之间需要互相通信。JNI就是要做这种互相通信的工作。需要Java/Kotlin程序员和C/C++程序员合作才能完成,当然了,如果这个人Java/Kotlin、C/C++都会那就最好了,就可以一个人完成了(招聘公司最喜欢了)。所以不管是应聘者的简历里还是招聘需求里,出现了JNI时要留意一点:是连C/C++也会,可以独立完成JNI还是需要和C/C++程序员合作才能完成JNI。

综上所述:目前android开发工作基本分为三类,应用(客户端)开发、框架开发、系统开发,其中应用开发人数最多,也是各互联网大厂的主力(因为他们主要做软件),框架开发、系统开发则主要集中在华米OV为代表的硬件厂商,因为他们要根据自家的特色和需求去修改Android系统、添加各种硬件相关的功能。目前应用开发已过巅峰期,以AI为基础的产业正如10年前的应用开发一样开启了一代新的更迭,算法、大模型、大数据、智能硬件、嵌入式相关岗位喷发。江山代有才人出,各领风骚数百年。

--- --- 分割线 --- --- 继续补充 --- ---

服务端:也称后端。也就是为手机客户端、网页端等提供数据的后台,也可以理解为云端,与我们的手机、电脑等可能相隔千里,通过网络连接在一起。浏览网页、手机刷新闻、刷视频等,所看到的内容就是服务端提供的。手机、电脑等向服务端发送请求,服务端返回数据,再由手机、电脑浏览器等展示出来,就是我们看到的视频、新闻资讯等。目前Java语言在服务端开发中占有重要地位,所以采用Java语言开发应用的Android应用开发工程师转向服务端开发会更容易一些。

另附找工作体会如下

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 19:24:41

opencode:终端里的AI编程代理,从安装到实战全解析

1. 先把opencode放在正确的位置上:它到底是个什么东西 1.1 从终端里长出来的AI编程代理 第一次听说opencode的时候,我其实有点麻木了,毕竟这两年AI编程工具出来一个接一个,从最早的GitHub Copilot到后来的Cursor,再到…

作者头像 李华
网站建设 2026/9/8 19:23:43

硬件工程师如何一次性做好设计?从原理图到量产的避坑指南

1. 为什么硬件总在返工:根源不在调试能力,而在设计习惯先说一个我印象很深的例子。前年团队里来个新人,做一块电源板,原理图改了四版,PCB投板两次,样板焊完上电发现纹波超标,又来回调了好几天。…

作者头像 李华
网站建设 2026/9/8 19:21:50

从被动应答到主动执行:Clawdbot智能体如何落地流程自动化

Clawdbot这名字第一次看到的时候,我愣了一下。单看这个拼法,它既不是传统意义上的聊天机器人,也不是那种只能按固定脚本走的RPA机器人。“Claw”本身是爪子,这意味着它有抓取、拾取、操作真实对象的能力,而“bot”又说…

作者头像 李华
网站建设 2026/9/8 19:20:36

Anthropic 2万亿美元估值背后:外部信托如何重塑AI公司治理

最近科技圈里有一条新闻,热度不比任何一款新模型发布低——Anthropic的IPO计划浮出水面,媒体估算里甚至出现了“最高2万亿美元估值”这个量级的数字。这直接把原本已经不算低调的Claude推向更大的牌桌。但比起“又要多一家超级公司”这种感叹&#xff0c…

作者头像 李华