App开发流程规范
本文档定义了我司移动端对第三方公司开发APP项目的流程规范,主要是基于项目的研发流程进行规范:从UI(UE)设计、移动端开发、后台开发和测试这四个环节我司进行了规范。规范包括我司提出的要求和建议,也包括我司可以提供的服务和支持。
本文档的预期读者包括:我司和第三方公司的设计(UI)人员、开发人员及测试人员。
统一的账号
- 邮箱账号【暂时负责人各自申请】
- 手机号码【NA】
支付宝微信
UI/UED规范
效果图规范
效果图统一标注,各个移动端平台用一个主流分辨率进行标注,减少工作量,也方便统一管理。
- Android用1080P分辨率进行坐标、配色的标注。
- IOS用3倍屏(6Plus)进行坐标、配色的标注。
切图规范
Android尽量只是一套切图,减少资源包大小。
- Android用1080P分辨率尺寸进行图片组件切图。
- IOS2倍屏、3倍屏均切。
公共组件规范
我司UI设计提供公共组件:加载框、提示框、弹出窗、标题、底部栏、列表为空的显示,列表上下拉的显示等。
颜色值规范
颜色值统一罗列,方便管理。
像素值规范
效果图里面的像素值统一用dp或者pt表示。
测试规范
测试用例
- 普通测试用例(后台和客户端)
- 关键测试用例(后台和客户端)
Monkey测试
NA
测试报告
NA
BUG提交
【问题描述】:
【预期结果】:
【实际结果】:
【复现路径】:【NA】
【测试用例号】:
代码规范
Android签名统一管理
代码规范
- Android代码规范
- IOS代码规范
单元测试
NA
代码review
项目开发期间每个星期进行1次代码review,发现的问题单要记录归档,提交服务器。并且问题单要在下一次代码review前解决。
版本提测
- 版本提交测试的时候必须要跑通《测试用例》
- 版本名字符合规范:aorise-[项目名字]-[版本号]-[日期]-[类型].后缀
Eg: aorise-education-v1.0.0-20160921-release.apk
代码静态检查
- Android的检查工具:findbugs、lint
- IOS:NA
代码混淆
NA
BUG修复
【问题单号】:
【原因分析】:
【解决方案】:
Android规范
开发环境规范
统一开发工具和开发环境。
- Android Studiio 2.3.1
- Java 8
- Gradle2.3.1(Android Studiio 2.3.1 默认配置即可)
启动页规范
APP的桌面icon,启动页图片,登录(注册)模块要统一。
- APP桌面的Icon图片,显示文字我司提供。
- 启动页我司提供720P分辨率的背景图片。
- 登录(注册)—— 预留接口或者配置,以后可以统一接入我司SDK。
包名规范
我司域名反写+项目名字,项目名字我司会提供。例如cn.aorise.[项目名字: platform | education | petition]。具体项目名字见附录表一。
Res资源规范
Res资源文件夹里面的全部文件名字和资源ID加项目名字做前缀。理论上所有颜色值,像素值,字符串等资源全部提取到res文件中,也要加项目前缀。
- drawable文件夹里面的全部文件名字加项目前缀。
- anim文件夹里面的全部文件名字加项目前缀。
- layout文件夹里面的全部文件名字加项目前缀。
- values文件夹里面的全部文件colors,demens,interger,strings,styles等全部资源ID加项目前缀。
Assets和Raw资源规范
assets和raw里面的全部文件名字加项目前缀。
数据库名字规范
移动端项目里面如果用到本地数据库,数据库的名字一定要加项目前缀:项目.db或者项目-xxx.db。
依赖规范
第三方数据库,网络图片显示和网络请求等外部依赖我司可以提供SDK提供调用(或者我们提供第三方依赖的版本)。
包结构规范
采用我司提供的sample样例结构,方便我司后期维护和整合。
开发规范
采用我司提供的sample样例框架,方便我司后期维护和整合。
- Activity继承BaseActivity
- Fragment继承BaseFragment
- 列表页面继承BaseListActivity
- Webview页面继承BaseWebActivity
- 还有统一的toolbar,dialog等相关处理,具体参考sdk里面的sample样例。
DataBinding开启规范
Android Studiio开启dataBinding支持,不一定要支持MVVM开发模式,起码通过dataBinding模式找view,不需要通过findViewById写大量的view成员变量。
IOS规范
开发环境规范
统一开发工具和开发环境
- objective-c
- Xcode 8.2.1 (必须用最新的正式版)适配最新ios系统
启动页规范
APP的桌面icon,启动页图片,登录(注册)模块要统一。
- APP桌面的Icon图片,显示文字我司提供。
- 启动页根据最大屏(目前5.7)提供。
- 登录(注册)—— 预留接口或者配置,以后可以统一接入我司SDK。
包名规范
BundleID统一用我司域名反写+项目名字例如cn.aorise.[项目名字: platform | education | petition]。具体项目名字见附录表一。
Assets资源规范
为了方便管理控制,一般的ios端的所有图片资源全部存放于Assets文件中,为了规范命名,推荐以下命名方式:模块前缀加上项目。
Bundle资源规范
除了图片资源,一些工程里面需要用到的其他资源文件 、Xib和Storyboard文件全部存放于Bundle文件里面,方便后期项目打包成库,命名也必须加上前缀。
Eg:EDUMainViewController.storyboard。
数据库名字规范
不管是用苹果自带的数据库CoreData也好,还是其他第三方数据库FMDB、Realm等等,为了保证项目与项目之间的唯一,也必须加上前缀。
依赖规范
第三方数据库,网络图片显示和网络请求等外部依赖我司可以提供SDK提供调用(或者我们提供第三方依赖的版本)。
开发规范
采用我司提供的ios版样例框架,方便我司后期维护和整合。为了以后app项目合并,我司做法是把app打包成FrameWork库,资源文件打包成Bundle文件这种形式快速整合。为保统一,外包的第三方app也必须按照这种方式来。
IOS Deployment Target 必须保持一致(目前8.0)。
后台规范
接口文档规范
接口文档清楚完整,有详细的入参和出参描述,并且每个接口附带有请求和响应的完整输入和输出用例。
{
"code": 1,
"msg": "success",
"data": null
}
统一登录接口规范
登录接口的入参和出参描述。
入参:账号,密码(游客登录,第三方账号登录等)
出参:
{
"code": 1,
"msg": "success",
"data": {
"account": "XX平台",
"id": "431125201702133114",
"sex": "男"
}
}
推送规范
APP推送统一采用个推。
桩数据建议
提供每一个接口请求的完整桩数据。
风险
65536限制(Android)
Android应用程序(APK)在Dalvik可执行文件的形式包含可执行的字节码文件(DEX)文件,其中包含已编译的代码来运行你的应用程序。Dalvik可执行规格限制一个Dex文件包含65536个方法:包括Android框架方法、Library方法的总数、和你自己的代码方法总数。因为65536等于64×1024,这一限制被称为“64k引用限制”。
目前有一些解决方案(不过都有一定的风险):
- 代码混淆(技术难度大,工作量大,尤其还有混淆第三方项目)。
- 设置multiDexEnable(android4.0以下版本可能不支持,某些第三方库可能有问题)。
数据库版本限制(Android/IOS)
Android应用程序使用的使用的本地数据库必须要统一,否则可能出现问题。本来各个APP使用任意第三方数据库都没有问题。不过如果以后我们要把各个APP整合到平台APP里面,就必须提前规范第三方公司采用的第三方数据库版本。
目前规范的数据库版本:
- Android第三方数据库版本是:org.greenrobot:greendao:3.2.0
- IOS用自带的数据库coreData(FMDB和Realm待定)。
第三方库版本限制(Android/IOS)
Android或者IOS的第三方APP开发某些功能相同的情况下,怎么样规范他们采用的技术标准也是一个可能的风险。
例如民生和城管两个APP,都用到地图功能。
- 如果一个APP采用百度地图1.0的库,一个APP采用了百度地图2.0的库。我们在整合成平台APP的时候就可能冲突。
- 如果一个APP采用百度地图的库,一个APP采用了高德的库。我们在整合成平台APP的时候又可能让平台APP出现无所谓的臃肿。
统一登录和注册的限制
多个APP统一登录注册可能存在风险。
注册可能有几种方式:
- 没有注册,直接进入APP。
- 需要注册(手机号码,邮箱等)。
登录可能有几种方式:
- 游客模式(IOS)。
- 账号密码模式。
- 第三方账号授权模式。
这个需要公司产品有一个明确的需求,明确我们目前统一登录和注册体系的一个方案,才好进行设计。
SDK版本限制
为了统一UI体验,统一登录注册账号体系,统一第三方库版本,必须第三方公司采用我司提供的SDK进行开发,这样可能存在的风险。
因为公司内部还没有利用SDK进行过一次完整的独立开发,实际开发过程中肯定会出现经常改动或者优化SDK的情况,这个对于公司内部的开发基本上影响不大。不过频繁更新SDK,会影响第三方公司的开发进度。除外对接的时间和人力成本也比较高。
附录
- 项目名字
项目名字cn | 项目名字en | 项目包名 |
---|---|---|
智慧城市 | platform | cn.aorise.platform |
样例 | sample | cn.aorise.sample |
互联网+民生服务 | live | cn.aorise.live |
综治网格化 | grid | cn.aorise.grid |
数字化城市管理 | city | cn.aorise.city |
阳光信访信息管理 | petition | cn.aorise.petition |
教育 | education | cn.aorise.education |
医疗 | hospital | cn.aorise.hospital |
交通 | traffic | cn.aorise.traffic |
注:项目名字中aorise,common,component等均为保留字段,请后期添加项目的时候不要使用。另外添加项目名字请使用英文名字,并且考虑到资源文件均需要增加项目名字做前缀,请尽量控制英文名字短小。