史爱武:移动开发职位的职责解析

发表时间: 2023-01-29 07:00

来源于微信公众号:计算机大学生

随着手机、平板等移动设备的普及以及移动互联网的兴起,移动用户越来越多,移动端应用App变得越来越重要。手机看新闻、玩游戏、订酒店、购票、打车、金融支付等以前只能通过PC端完成的事情,现在通过手机(或其他移动设备)App都能实现,而且更方便更快捷。

所有这些日益普及的移动应用App都是通过移动开发来完成的。移动开发,更准确的叫法应该是移动客户端开发(主要是Android或iOS客户端),和Web前端开发(以浏览器作为客户端)其实都属于前端开发的范畴。

前端是相对比较大的概念,用户能够看到、直接接触的界面都算是前端,比如iOS界面、安卓界面、Web界面,PC/Mac桌面客户端的界面。包罗万象的“大前端”是目前前端发展的趋势,包括PC端、手机端、平板端、智能电视端、汽车显示端、智能手表等可穿戴设备,等等。

相较于Web前端开发,移动开发(移动客户端开发)与它的主要区别在于:

架构不同。移动开发主要是开发App,是C/S架构的开发。Web前端开发主要是基于PC端(或移动端)浏览器来开发Web页面,是B/S架构的开发;

面向设备不同。移动开发主要面向手机、平板、智能电视等移动设备,Web前端开发则主要面向个人电脑PC端;

开发语言不同。移动端原生开发针对不同的系统类型采用的编程语言也有所不同——Android端采用Java或Kotlin开发语言,iOS采用Object-C或Swift语言,原生App开发语言与Web前端开发语言差别比较大。不过,另两种移动APP开发方式(混合式开发、H5开发)却可以使用与Web前端开发相同的语言和技术框架。

移动应用的后端开发与Web后端开发在各方面是相同的,也是实现业务逻辑、给前端提供API接口以及优化系统的整体性能。实际上,在现在的“多端时代”,应用系统实际上都是开发一套后端代码,但是应用前端却是多种多样,包括Web前端(用于PC电脑)、Android客户端(用于Android手机以及其他Android移动设备)、iOS客户端(用于苹果手机以及苹果其他移动设备)。

所以,移动开发,实际上指的就是Android客户端开发或iOS客户端开发。因为Android操作系统拥有更多的移动端用户,本文主要以Android客户端开发为例来展开介绍。


岗位职责

目前市场上主流的移动App开发分为三种——原生App、Web App(网页应用)和混合App,对应的移动开发就是原生开发、H5开发和混合开发。

1、原生开发(Native App开发)

原生开发(Native App开发),是在Android、iOS等移动平台上利用官方提供的开发语言、开发类库、开发工具等进行App开发。比如,Android原生App就是指使用Java或Kotlin开发语言在Eclipse或Android Studio的开发工具上直接调用Android SDK API开发的App;而iOS 原生App就是指通过Objective-C或Swift开发语言在Xcode的开发工具上直接调用iOS SDK API开发的App。

原生App开发代表着较好的用户体验和更快更高的性能,但是原生开发的App的可移植性比较差,没有跨平台兼容的能力。针对一款原生App,Android和iOS都要各自开发,同样的逻辑、界面都要写两套。所以开发周期比较长,成本比较高,获得新版本时需重新下载应用更新。但是,原生APP的优点也是显而易见的:可访问Android/iOS平台提供的全部功能(GPS、摄像头、感应器等);速度快、性能高、整体用户体验最好;App质量及安全性好。

2、Web App开发(移动Web)

Web App开发(移动Web),Web App即我们通常所说的H5 App,顾名思义是指基于Web的应用,基本上是用HTML5、CSS和JavaScript等Web前端技术和语言构建Web页面,然后发布到服务器,用户通过手机等移动设备的浏览器访问这些页面,不需要安装和下载这类App,基本上可以说是基于移动端浏览器的网页应用。这种只编写一次、可到处运行的移动开发方法构建的跨平台应用程序可以在多个设备上运行。在有些浏览器中点开看到的小应用,看起来效果和App差不多,其实就是使用的H5页面,如微信公众号等。

该模式的优点包括跨平台运行、开发周期短、成本低、快速更新升级、无需客户端下载安装和升级,等等。其缺点也很明显:无法访问很多的原生移动设备的功能(摄像头、日历和地理位置等);质量及安全性无法得到保障;移动应用用户体验较差,等等。一般情况下,Web App都是一种临时入口和过渡方案,或者提供给用户体验要求不高的应用场景。

3、混合开发(Hybrid App开发)

混合开发(Hybrid App开发),按字面意思理解就是指介于上述原生App开发和Web App开发这两者之间的开发模式, 兼具“原生App良好用户交互体验的优势”和“Web App跨平台开发和低成本的优势”,需要安装下载,看起来和原生App差不多。

混合开发是一种取长补短的开发模式,原生代码部分利用WebView插件或者其它框架为H5提供容器,程序主要的业务实现、界面展示都是利用与H5相关的Web技术进行实现的。混合App允许开发人员将H5等Web代码嵌入到一个精简的原生容器中,该容器包含原生应用程序和H5应用程序。目前已经有众多Hybrid App开发成功应用,比如京东、淘宝、今日头条等APP,都是采用混合开发模式的。

混合模式开发的App的特点基本介于原生App和Web App之间:能跨平台运行;开发成本、周期和用户体验介于两者之间;能访问移动设备的大量原生功能,等等。

混合App是从开发层面实现“一次开发,多处运行”的机制,成为真正适合跨平台的开发模式。混合APP越来越受欢迎,是目前乃至未来发展的趋势,主要原因之一就是它可以“热更新”,不再受审核、上线复杂流程的限制。

不管是哪种移动APP开发模式,对于移动开发工程师来说,他们所要掌握和运用的开发技术可能会有区别,但是他们主要的工作职责是相同的,基本和Web前端开发工程师也是差不多的,主要也是开发移动用户界面并适配,以及优化访问性能。


下面是一个Android移动开发工程师的岗位职责描述。

岗位职责:

1.根据产品需求、UI/UE原型设计,独立负责Android手机客户端开发和测试工作;

2.与后台开发工程师、UI设计师协作,完成移动端交互、效果、表单、数据展现;

3.负责Android前端优化和架构工作;

4.对开发的Android平台产品负责;

5.按照开发流程编写相应模块的文档。

(一)开发和适配移动用户界面

相较于PC端。移动端具有界面空间小、支持触摸屏、使用移动网络或者无线WIFI、电池供电等特性。虽然PC用户端并没有过时,但移动设备用户远超PC用户,移动用户花费越来越多的时间通过智能手机等设备来浏览社交网络、购物、玩游戏、看视频甚至处理工作事务。所以,更多的网络流量也来自于移动用户。鉴于此,移动界面设计人员和移动开发人员应该熟悉移动使用环境和技术限制,创建用户体验友好的用户界面。

随着技术的发展,移动设备越来越流行,不同设备间屏幕尺寸和屏幕像素也有差异,相较于PC端的Web前端开发,移动端开发可以不用担心各种浏览器的兼容问题,但是随之而来的却是各种屏幕尺寸的适配问题——就是适配各种机型不同屏幕的大小,让每种机型上的布局看起来都尽量一样。换句话说,同一套代码在不同屏幕大小的手机等设备上运行时,页面元素间的间距、留白,以及图片大小会随着变化,在比例上跟UI设计保持一致,不会出现变形、模糊等适配问题。

一般来说,移动设计人员交给开发人员的设计图是少数几个规格(比如,375px或750px),面对市场上各种各样的移动端屏幕,似乎这2个尺寸的设计图无法满足所有的屏幕,要求移动界面设计师为每一个屏幕都做一份图,也是不现实的。于是,移动开发人员经常要考虑屏幕适配的问题。如果开发用的是Vue等一些前端框架,那么Webpack等一些工程化工具会提供一些用于移动端适配的插件。如果没有这些移动端适配的插件或工具,移动开发人员就需要自行在不同尺寸屏幕布局的时候进行换算。

所以,由于移动终端的屏幕尺寸(分辨率)等不同,移动设备的界面适配也是移动开发工程师的重点工作任务之一。没有做好屏幕适配,有些移动终端上的界面显示就可能出现问题,自然导致用户的体验不佳。

不过,随着开发技术、框架和架构的发展,现在的移动界面适配问题越来越“智能”和“自适应”了,移动开发人员不再需要手工换算分辨率和比例等界面布局细节了。但是,技术、框架等发展只是减轻了移动开发人员的手工工作,屏幕适配问题依然存在并且是移动开发工程师的主要工作职责之一。

(二)优化移动应用访问性能

想必经常会听到身边使用手机的人感叹:APP怎么那么卡?手机怎么那么烫?耗电怎么那么快?其实这些都归结于性能问题。为了给用户提供更优的体验,性能优化是前端开发避不开的话题。特别地,移动用户更是关注性能,一个优秀的移动APP必然是拥有丰富功能并且具有比较快的响应速度和流畅的交互体验。无可置疑,性能优化对移动开发是相当重要的。

简单来说,手机(移动)用户能体验到的性能问题可以归结为四个类别——也就是流畅、稳定、省电和省流量。流畅就是用户在使用移动应用时响应速度快,较少的用户等待时间,不会出现卡顿。稳定就是移动用户在使用过程中不会出现应用崩溃和无响应。省电就是节省耗电量,省电会延长续航时间,避免导致手机发烫,耗电问题表现为不必要的自启动,不恰当持锁导致系统无法正常休眠,系统休眠后频繁唤醒系统等。省流量就是节省用户使用过程中所消耗的网络流量,省流量实际上也减少了用户的流量费用。

移动端与PC端的性能影响因素差异还是比较大的,主要表现在:移动端的CPU、内存等设备性能相比于PC端还是有很大限制的;移动网络的带宽速度较小,虽然4G/5G网络提升了移动网络速度,但是相对于PC端,带宽速度还是不够的。处理器性能低、内存小、带宽低等性能限制是移动设备天生具有的。所以,移动开发工程师不得不想办法通过优化前端页面的性能(移动后端也是需要优化的)来满足用户的性能预期。

移动网络的连接形态是无线的(无线WIFI或者移动网络)。无线连接的优点就是便捷,只要有信号就能上网,而它的缺点是不稳定,没有像有线连接那样的抗干扰手段,而且离信号越远网络越差。所有的手机用户几乎都体验过网络不好的情况。随着移动网络的不断升级,移动端的网络传输由3G进化到WIFI、4G/5G,且WIFI场景越来越多。虽然网络环境在变好,但是面对国内移动无线网络的复杂环境,加上移动设备多种多样的硬件特性,因此移动开发工程师会面临比传统Web前端开发更具挑战的性能优化问题。

对于移动应用App来说,在网络不好的环境下使用,如果性能优化方面处理不好,会导致大量消耗带宽流量、浪费电量等资源问题。所以,移动开发工程师有必要解决弱网环境下会出现的问题——移动网络环境如此复杂,如何确定弱网环境?如何提升弱网环境下的业务成功率?

加载过程是最为耗时的过程,可能会占到总耗时的80%时间。因此,加载优化也是移动开发性能优化的重点。

众所周知,移动应用不仅应该能快速加载显示页面,光有内容没有流畅的用户体验也是不行的,移动开发工程师需要从UI、内存、响应速度、资源、稳定性、耗电以及安装包等多方面进行优化。UI优化包括减少布局层级,一般层级控制在4层以内,超过5层时需要考虑是否重新排版布局;去除不必要的背景,等等。内存优化主要是为了避免“内存溢出Out of Memory问题”和频繁触发GC(垃圾回收)导致性能下降,比如,使用线程池管理线程,避免线程的新建,等等。移动开发工程师要深入分析发现的性能问题,一步步深入研究导致性能问题的本质原因及场景,寻找有效的优化方案,从而解决问题和实现高质量的移动应用。

在这个“用户体验为王”的时代,每年都有些企业(或机构)组织面向广大移动开发者的移动应用性能相关的比赛,旨在围绕着“移动开发者日常项目中遇到的崩溃/卡顿/ANR/OOM/启动慢等场景的解决方案”进行征文比赛,只为寻找“移动开发性能优化大牛”,大赛的优胜者还能获得举办企业或联合多家公司的的实习或工作Offer。


尽管和Web前端开发一样,移动开发也属于“大前端开发”范畴。但是由于移动设备的性能以及移动网络的无线连接等诸多限制,移动开发工程师在按照UI/UE设计完成用户界面的开发之后,最重要的工作任务还包括两项:一是各种设备屏幕大小(分辨率)的适配,让用户界面的体验保持一致;二是优化移动应用的访问性能,提升移动应用App的流畅性和稳定性,省电和省流量。