制造业
手机应用软件开发
手机应用软件开发


简介

手机应用软件开发是指针对特定手机操作系统和硬件平台开展的软件开发。与传统的桌面、工控等软件开发相比,手机应用软件开发受限于手机的屏幕尺寸和低功耗等要求,但也能够充分利用手机上诸如麦克风、相机,以及其他各类传感器等硬件资源。当然,手机应用软件开发也存在操作系统的区隔,目前最主流的是苹果公司主导的iOS系统与Google公司主导的Android系统。2019年,华为自主研发的鸿蒙系统(HMS)也随之公布。随着智能设备市场的发展,面向平板、智能手表等产品的软件开发,通常也被纳入手机应用开发的范畴。

手机操作系统

截至2019年,全世界最主流的智能手机操作系统是Android(国内通常称为「安卓」)和iOS,二者共同占据了几乎全部的全球市场份额。根据statcounter的统计数据,自2018年11月至2019年11月,iOS在智能手机市场占比约四分之一,剩下的近四分之三则被Android系统占据。

iOS为苹果公司拥有的闭源操作系统(除一部分和macOS共享代码的Darwin内核开源之外),其只能运行在苹果公司推出的iPhone和iPod Touch设备上。此前,iPad产品所搭载的也是iOS系统。而苹果在2019年6月召开的WWDC全球开发者大会上宣布,iPad所运行的操作系统将从iOS重新命名为iPadOS。苹果推出的Apple Watch和Apple TV产品则分别运行着名为watchOS和tvOS的操作系统。通常,iOS和其他苹果产品操作系统每年会更新一个大版本,并在当年夏天举行的WWDC大会上公布详细信息,然后在秋季随新一代iPhone推出正式版(2020较为特殊,在《Apple特别活动》上推出了新产品、iPadOS14 watchOS7及订阅服务。)截至 2020秋,最新系统为MacOS10,iOS或iPadOS或tvOS14,watchOS7

Android为Google公司推出的移动操作系统。其特点在于支持的设备范围相当广泛,远不仅限于Google推出的手机。通常来说,可以将Android系统分为两个部分:Android开源平台(AOSP)Google移动服务(GMS)。其中AOSP是按照Apache许可证开源的自由软件,可以由各大厂商自由修改、定制和发布。而GMS属于Google的私有服务,包含Google Play、Gmail、YouTube等Google官方应用商店和应用程序。

由于Google目前并未在中国大陆提供服务,因此国内发售的Android手机通常是基于AOSP进行定制的厂商发行版,如小米手机的MIUI,华为手机的EMUI等。

除iOS和Android系统之外,还有微软公司的Windows Phone/Windows 10 Mobile(现已停止支持)、诺基亚的Symbian(中文称为「塞班」,现已停止支持)、华为于2019年发布的鸿蒙(Harmony)操作系统【暂未开放使用】,以及Google研发中的下一代移动操作系统Fuchisa等。

开发方式

iOS平台

面向运行iOS系统的苹果设备进行软件开发,通常需要按照官方相关开发文档,使用苹果提供的开发工具包进行开发工作,然后将成品通过App Store的官方渠道进行审核和分发。如果苹果方面审核没有通过,开发者需要按照审核意见进行修改并再次提交,否则新版本应用将无法上架。对于未越狱、未安装其他描述文件的iOS设备,App Store是唯一获取新应用的渠道。

在App Store分发方式之外,苹果还为企业用户提供了其他一些应用分发渠道用于软件测试或企业内部分发(如针对员工办公使用的应用)。拥有苹果认证过的企业证书的企业,可以在不提交App Store的前提下发布新版本应用。而信任了该企业证书的设备则可以直接安装企业发布的应用。但由于这种分发方式严重受到来自赌博、色情等灰色产业团伙的滥用,以发布无法通过App Store审核规则的非法应用,苹果目前已经收紧了对企业证书的发放。

要开发iOS应用,目前只能使用运行macOS系统的苹果电脑设备。由于苹果的Mac系列电脑都使用X86指令集架构的CPU,一些爱好者可以比较容易地在非苹果发售的硬件上运行macOS,这种行为通常称作「黑苹果」。需要注意,尽管macOS系统是免费的,但苹果官方并未授权在非苹果电脑上运行macOS这种行为。尤其对于大型企业,这种行为可能会导致法律问题。苹果官方发布了一个官方的集成开发环境(IDE),称作Xcode,可以在Mac App Store免费下载。

关于开发语言,苹果官方支持着两种编程语言——Objective-C和Swift。理论上,由于这两种语言同C/C++紧密的联系,用C语言或C++编写iOS应用也可行(一部分iOS开发中使用的第三方库就是由C/C++开发),但苹果官方对操作系统API提供的接口和文档一律用Objective-C或Swift表示。自OS X以来,苹果一直使用Objective-C作为开发语言。在2014年WWDC大会上,苹果发布了Swift语言,其相比Objective-C多出了一部分现代语言的优势。2015年,苹果宣布Swift语言编译器开源,可以在苹果之外的其他操作系统运行(但不支持苹果系统上的系统接口)。在2019年WWDC大会上 ,苹果发布了SwiftUI,让开发者更快速地开发用户界面,轻松地把一百行的前端代码缩减到十几行 ,把重点放在后端。

Android平台

在Android平台,Google官方支持Java和Kotlin两种编程语言。Google官方鼓励使用Android Studio作为开发工具。

和Swift相似,Kotlin吸收了现代语言如类型推断等全新特性,令开发效率提高。Kotlin由捷克JetBrains公司设计并开源编译器。在2017年的Google I/O大会上,Google宣布Kotlin成为受官方支持的Android开发语言。

评判标准

组成部分

  • 一个安卓App由Res,assets,AndroidManifest,classes等组成,其中Res目录一般是应用存放资源的位置,AndroidManifest则负责告诉安卓程序该如何运行。
  • Classes即是编译过后的程序源代码,编译后的语言称为Smail。
  • 一般来说,Res中包含Resources.arsc和Res文件夹,有些人可能会对Res进行混淆。


语义化版本号控制(SemVer)

本条目适用于所有软件开发流程

以下关键词 MUST、MUST NOT、REQUIRED、SHALL、SHALL NOT、SHOULD、SHOULD NOT、 RECOMMENDED、MAY、OPTIONAL 依照 RFC 2119 的叙述解读。(译注:为了保持语句顺畅, 以下文件遇到的关键词将依照整句语义进行翻译,在此先不进行个别翻译。)

使用语义化版本控制的软件必须(MUST)定义公共 API。该 API 可以在代码中被定义或出现于严谨的文件内。无论何种形式都应该力求精确且完整。

标准的版本号必须(MUST)采用 X.Y.Z 的格式,其中 X、Y 和 Z 为非负的整数,且禁止(MUST NOT)在数字前方补零。X 是主版本号、Y 是次版本号、而 Z 为修订号。每个元素必须(MUST)以数值来递增。例如:1.9.1 → 1.10.0 → 1.11.0。

标记版本号的软件发行后,禁止(MUST NOT)改变该版本软件的内容。任何修改都必须(MUST)以新版本发行。

主版本号为零(0.y.z)的软件处于开发初始阶段,一切都可能随时被改变。这样的公共 API 不应该被视为稳定版。

1.0.0 的版本号用于界定公共 API 的形成。这一版本之后所有的版本号更新都基于公共 API 及其修改内容。

修订号 Z(x.y.Z | x > 0)必须(MUST)在只做了向下兼容的修正时才递增。这里的修正指的是针对不正确结果而进行的内部修改。

次版本号 Y(x.Y.z | x > 0)必须(MUST)在有向下兼容的新功能出现时递增。在任何公共 API 的功能被标记为弃用时也必须(MUST)递增。也可以(MAY)在内部程序有大量新功能或改进被加入时递增,其中可以(MAY)包括修订级别的改变。每当次版本号递增时,修订号必须(MUST)归零。 主版本号 X(X.y.z | X > 0)必须(MUST)在有任何不兼容的修改被加入公共 API 时递增。其中可以(MAY)包括次版本号及修订级别的改变。每当主版本号递增时,次版本号和修订号必须(MUST)归零。

先行版本号可以(MAY)被标注在修订版之后,先加上一个连接号再加上一连串以句点分隔的标识符来修饰。标识符必须(MUST)由 ASCII 字母数字和连接号 [0-9A-Za-z-] 组成,且禁止(MUST NOT)留白。数字型的标识符禁止(MUST NOT)在前方补零。先行版的优先级低于相关联的标准版本。被标上先行版本号则表示这个版本并非稳定而且可能无法满足预期的兼容性需求。范例:1.0.0-alpha、1.0.0-alpha.1、1.0.0-0.3.7、1.0.0-x.7.z.92。 版本编译元数据可以(MAY)被标注在修订版或先行版本号之后,先加上一个加号再加上一连串以句点分隔的标识符来修饰。标识符必须(MUST)由 ASCII 字母数字和连接号 [0-9A-Za-z-] 组成,且禁止(MUST NOT)留白。当判断版本的优先层级时,版本编译元数据可(SHOULD)被忽略。因此当两个版本只有在版本编译元数据有差别时,属于相同的优先层级。范例:1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.sha.5114f85。 版本的优先层级指的是不同版本在排序时如何比较。判断优先层级时,必须(MUST)把版本依序拆分为主版本号、次版本号、修订号及先行版本号后进行比较(版本编译元数据不在这份比较的列表中)。由左到右依序比较每个标识符,第一个差异值用来决定优先层级:主版本号、次版本号及修订号以数值比较,例如:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。当主版本号、次版本号及修订号都相同时,改以优先层级比较低的先行版本号决定。例如:1.0.0-alpha < 1.0.0。有相同主版本号、次版本号及修订号的两个先行版本号,其优先层级必须(MUST)透过由左到右的每个被句点分隔的标识符来比较,直到找到一个差异值后决定:只有数字的标识符以数值高低比较,有字母或连接号时则逐字以 ASCII 的排序来比较。数字的标识符比非数字的标识符优先层级低。若开头的标识符都相同时,栏位比较多的先行版本号优先层级比较高。范例:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0。

产品设计

产品设计工作流程

1.用户调研,用户分析 基于产品的定位和商业模式,筛选目标用户、确定用户画像,为后续的产品设计奠定基础 2.需求分析,确定核心业务 根据对用户的认知,构建用户场景深度分析,挖掘用户需求,目的是打造一款满足用户需求的产品 3.功能分析,确定业务流程 接下来开始为产品进行功能评估、流程评估,一款好的产品应该有合适自己的商业模式、完整的业务闭环、提供应对风险的解决方案、用户运营体系等。针对不同的产品性质,各要素的权重值有所不同 4.原型制作,编写需求文档,组织需求评审 原型制作由产品经理输出产品的低保证原型图,后交由UI完善形成高保真UI图,UE完善交互效果;产品需求文档(PRD)是对产品定位、业务逻辑、信息结构等内容的描述,面向对象主要但不限于:交互设计师、项目经理、开发、测试、运营及其他业务人员 5.研发、测试、上线 6.收集数据以迭代,重复1~6

产品设计名词解释

痛点

痛点是恐惧:当用户形容一个需求时用了“怕”,这就是意味着痛点。 例如:我怕编辑了一天的文件忘了保存。痛点是忘了保存。

爽点

爽点是即时满足:人在满足时的状态叫愉悦,人不被满足就会难受,就会开始寻求。 如果这个人在寻求中,能得到即时满足,这种感觉就是爽。

痒点

痒点是满足虚拟自我:什么是虚拟自我?就是想象中那个理想的自己。这不是功能性的需求,这就是一种虚拟自我的实现。

用户体验

用户体验分为五个层次: 表现层 框架层 结构层 范围层 战略层

应用分发

一个手机应用被开发出来后,用户可以在应用商店(例如苹果APP Store或者谷歌Google Play)下载应用并得到持续的更新服务。开发者在开发完成后将应用程序交由上述平台管理,这一过程成为应用的分发。分发应用的目的是使用户可以集中的下载管理手机设备上的应用程序,最早采用此模式管理系统内应用程序的是苹果公司。分发应用是开发者推广应用的一种手段,但不是必须的。

常见的手机应用分发平台

  • (苹果) App Store
  • (谷歌)Google Play 商店
  • 各大应用商店

应用商店优化

应用商店优化即 App Store Optimization (ASO) 是以提升 App 在各应用商店的自然量表现的优化手段和过程。 分为国内 ASO 以及出海 ASO 两个方向。 国内 ASO 由于安卓商店对于搜索结果的干预(插入广告)已买量为主。国内的 App Store 也由于刷榜等黑帽优化手段,自然量的获取也很困难。 出海 ASO 细分两个应用商店 App Store 和 Google Play Store, 两个应用商店的规则差异较大,需要分别进行符合规则的优化。

开发过程

需求文档

需求文档开发阶段主要明确App的产品定位、目标用户、功能定义及各项开发指标等信息并输出App需求文档,用于指导后续的开发工作;

应用交互原型

依照产品需求文档形成App原型设计稿

UI设计

根据App交互原型进行界面及交互动画设计 一般来说,UI设计需要让界面有一定的层次感,并起到突出重点、引导用户操作的作用。例如给界面添加一定的阴影(安卓常用)或添加模糊效果(IOS常用),并让动画效果拥有自然的加速度和一定的关联性,同时在配色上突出主要信息和核心操作。 合适的UI设计可以使应用有更好的使用体验,而且,贴合系统主题也是应用美观要素的一部分。

后台服务开发

依照需求文档及App交互原型进行App后台服务开发并生成App的接口文档

App开发

依照需求文档、App交互原型、App UI、UE设计稿、接口文档进行App开发

测试

App进行内部测试

上线分发

App分发上线

生产线分工

设计和规划

位置与环境

投资与评估

规模与功能

风格与形式

组织结构

收益管理

客流曲线

时间分布

空间分布

目标群体

容量控制

风险控制

标准

文档

相关视频

以下是一个youtube的嵌入式视频,如果你身在国内,下方将会是一片空白。

编辑成员
24 人

sigh, 跳舞的线-滚动的天空, cys_wang, ii, 黄江林, Phantomlsh, 寒风凛冽, Hu W.T., Louis Studio, ecnelises, 是Ray酱呀, Lee, cute.2, MozChan, 没有后台的妖怪, roseau, A-S, Pluto_cn, lzw-723, zhshch, Typhon, X, 小梦, 木又

评论(2)

你需要登录发表评论。
oLubo1epBSQTO_QHNyZhgHTN_LaY 2020-07-23 23:46:47
大纲可以再完善下
跳舞的线-滚动的天空 2019-12-20 21:25:32
突然鸿蒙(
1
回形针手册-icons