APP技术规范11.docx
- 文档编号:7528191
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:11
- 大小:251.11KB
APP技术规范11.docx
《APP技术规范11.docx》由会员分享,可在线阅读,更多相关《APP技术规范11.docx(11页珍藏版)》请在冰豆网上搜索。
APP技术规范11
-标准化文件发布号:
(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
APP技术规范1.1
1概述
1.1修订目录
版本
修订内容
修订人
修订日期
V1.0
创建文档
张平
2017-11-16
V1.1
修改优化格式排版;补充日志管理、终端适配
张平
2017-11-20
1.2编写目的
该文档阅读对象为APPAndroid开发人员。
通过制定技术规范,提高哈银消费金融团队开发效率、规范开发流程、提高产品质量。
本文从项目实施流程规范、编程规范、质量管理规范、线上监控规范等方面论述,涵盖从项目框架搭建到版本控制、基线管理到上线全流程的行为约束及技术规范。
2技术规范
2.1开发规范
2.1.1实施规范
实施规范规定了在APP项目开发过程中如何保证APP开发顺利进行,避免因需求变更带来开发紊乱、工作延期。
具体要求如下:
1.必须保证需求文档和编码的一致性。
编码以需求文档为基础,必须保证所有的需求都被编码实现,同时当需求发生变更时必须修改编码。
2.必须保证设计文档和编码的一致性。
当代码的修改已经造成设计更改时,必须修订设计文档。
3.在代码已经基线化后,对代码的更改必须通过评审,并保存评审记录。
2.1.2代码规范
1.统一使用AndroidStudio作为开发工具;
2.编码格式统一为UTF-8;
3.java代码中不出现中文,最多注释中可以出现中文,提示文字要提取到string.xml中;
4.服务端可以实现的,就不要放在客户端;
5.引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大;
6.处理应用全局异常和错误,将错误发送给服务端;
7.数据一定要校验后使用,例如字符型转数字型,如果转换失败一定要有缺省值;服务端响应数据是否有效判断;
8.对于未完成的方法,使用TODO加以标记,不可直接提交svn或git;
9.若代码存在严重问题或仅用于调试,使用FIXME加以标记;
10.方法基本上都按照调用的先后顺序在各自区块中排列;
11.提取公共方法方法,去除重复代码。
对于必要的工具类抽取也很重要,这在以后的项目中是可以重用的;
12.禁止使用System.out输出,而是使用Log中的方法;如果使用开源Log库一定要自己做外层封装;
13.使用BuildConfig.DEBUG标记对Log进行封装,只在调试时输出重要信息,正式版不输出;
14.catch块不得为空,至少应当将异常信息输出;
15.程序中不允许出现魔鬼数字,例如switch中使用数字或缺乏含义的标识,应定义常量来标识每一项;
16.注释规范及其他代码规范详见《哈银消费金融Android开发规范》。
2.1.3命名规范
1、命名方式采用驼峰式命名;
2、包名、类名、方法名、常量名、变量、参数、资源文件、布局等的命名要严格按照《哈银消费金融Android开发规范》进行。
详见《哈银消费金融Android开发规范》。
2.2架构规范
2.2.1项目框架搭建
Android本身就是MVC,建议框架搭建时遵循按照职责分层的原则,保证系统的稳定性、可扩展性、可维护性,并为业务扩展、快速迭代奠定基础。
2.2.1.1基础框架搭建
一、模块要求
分类
要求
备注
组织目录结构
按职责定义包名
可根据业务场景灵活变动
基类封装
1、抽象方法提取、公共方法继承、事件总线、注解框架的初始化;
2、Activity栈管理器创建。
不可随意更改基类中方法和结构;
生命周期管理
1、使用Activity栈管理activity,保证在一个生命周期中只存在一个Activity;
2、封装正确的APP退出方式。
坚决杜绝Activity重复创建造成生命周期紊乱;正确使用Activity启动模式
公共方法提取
1、一个方法超过两次调用要提取到工具类中;
2、尽量使用接口回调、事件总线、广播处理跨页面通信,保证代码逻辑清晰。
事件总线EventBus、Otto使用时一定做好注释,便于溯源
Adapter封装
列表适配器使用频次高,封装公共BaseAdapter避免大量重复代码
此处建议使用开源库:
BaseRecycleViewAdapterHelper
注解框架
控件声明及点击事件使用ButterKnife注解
基础组件及回调封装
1、高频页面或列表可以抽象成可复用组件;
2、自定义控件、view;
3、点击事件监听需要重点封装,避免重复提交。
自定义按钮点击监听事件,防止按钮连击造成重复创建页面或处发多次接口请求
2.2.1.2开源库的使用
重复发明轮子不是明智的选择,例如成熟的网络框架、图片加载框架、其他成熟开源控件等的使用可以提高系统稳定性、可维护性。
但是需要遵循以下要求:
1、不引用未经项目实践过的开源库。
2、引入开源库前需要审阅module源码,审查是否存在代码漏洞、安全隐患。
3、删除无用的功能,有的开源库涵盖功能项较多,要求根据实际业务需求提取主要功能。
4、做必要的二次封装。
例如引用OkHttp、logger日志框架必须要做应用层封装后使用,便于维护和替换。
5、开源库版本要统一配置。
例如在build.gradle中统一配置dependence版本,便于团队开发维护。
2.2.1.3网络框架搭建
分类
要求
备注
通信协议
1、必须支持HTTPS扩展;
2、要求Android必须做有效的证书校验,防止中间人攻击;
客户端需要验证https证书是否CA机构颁发、有效期、服务端签名信息、域名校验等
网络框架选取
1、选择框架要符合业务场景要求;
2、支持高并发;
3、支持Https;
4、请求响应快速高效;
5、稳定性、可扩展性高;
6、不使用含有Google淘汰的方法或类,例如httpClient;
7、高容错性。
例如输入结果是否做各个码值情况的判断;不可用的值是否能够处理等
框架选型要综合权衡代码体积、是否支持上传和下载文件、图片加载效率、缓存机制、安全策略等方面。
封装
1、开源框架必须审阅核心代码后使用;
2、入口统一化,必须做应用层封装,调用和数据处理都在同一个入口和出口处理;
3、返回结果做好容错处理及回调;
4、关键处理要添加注释;
5、数据解析要支持多类型数据结构。
建议json解析使用fastJson;网络框架使用Retrofit+OkHttp。
2.2.1.4数据管理
分类
要求
备注
本地数据库存储规则
1、编写统一数据库管理类,包含增删改查等基础方法封装;
2、数据存储要加密;
3、使用ORM框架要做应用层封装。
1、如果有必要,需要对数据库文件进行加密,例如SQLCipher;
2、开源ORM框架可以选用GreenDAO。
SharedPreference存储规则
1、需要对存储内容加密;
2、存储键名勿使用魔鬼字符串,要使用常量统一管理。
封装SharedPreference工具类,可以选用3DES对SP内容加密
上传参数
做加密传输
需要与后台人员协定好加密方式
页面显示
敏感信息要脱敏处理
例如:
6222*********3241
2.2.2安全策略
从接口安全、账户安全、系统安全三方面加强APP安全策略。
2.2.2.1接口安全策略
1、防止中间人攻击
●前后端网络协议必须采用Https,并使用双向认证。
Android必须校验后台证书信息的有效性等参数,切记不做处理直接信任所有证书。
2、防止信息泄露
●客户端本地数据必须加密存储,包括数据库、存文件、SharedPreference等存储方式;
●敏感信息脱敏显示,例如身份证号、银行卡号。
3、防止恶意调用
●代码添加混淆;
●APK打包需做加固,防止反编译、二次打包、恶意篡改。
2.2.2.2账户安全
1、防止账户盗用
●登录密码、交易密码做强加密后传输;
●Token超时用户下线处理——账户盗用拯救策略。
2、交易安全
●交易密码输入需要使用Android开发自定义的安全键盘,而不是直接使用手机系统自带输入法键盘;
2.2.2.3系统安全
1、防钓鱼策略
●白名单检查
●时间戳检查
●IP检查
2、防拖库撞库策略
●前后台密码加密存储;
●添加登录失败多次后锁定账号功能,防止批量尝试登录。
2.2.3日志管理
分类
要求
备注
本地Log管理
1、封装应用层log工具类,便于统一管理调试;
2、本地只打印debug日志,release日志禁止打印;
1、建议使用Logger框架;
2、使用BuildConfig.DEBUG判断是否是release版本。
错误上报
1、Error日志要捕捉并上报到服务端;
2、集成友盟等三方监控,定期查看错误日志报表
本地Error日志每次重新启动时上报错误日志
2.2.4终端适配
分类
要求
页面开发
1、开发页面内容要满足业务需求,要求开发前先核对UI效果图与需求文档是否符合;
2、开发页面样式要严格按照UI标注图进行;
适配策略
1、要求UI切图至少提供1080*1920和1440*2560两套切图,分别放置到xx-hdpi和xxx-hdpi文件目录下;
2、能用.9.png实现效果就不要使用切图;
3、能用shape、selector实现的就不要使用切图;
4、使用权重(weight)规划布局,切勿写死布局宽度、高度;
5、间距、控件宽高如果有必要请使用百分比适配;
6、其他满足产品需求的适配方案。
适配机型
华为、vivo、oppo、小米、三星的主流机型
2.3质量规范
质量规范是在APP项目开发过程中制定的定期对开发人员提交代码进行CodeReview的机制。
Review细则如下:
分类
审核项
备注
常规项
1、代码能够工作么?
它有没有实现预期的功能,逻辑是否正确等;
2、是否存在多余的或是重复的代码;
3、代码是否尽可能的模块化了;
4、是否有可以被替换的全局变量;
5、是否有被注释掉的“僵尸”代码;
6、循环是否设置了长度和正确的终止条件;
7、是否有可以被库函数或公共方法替代的代码;
8、是否有可以删除的日志或调试代码。
评审标准参考章节2.1、2.2列出的技术规范
安全
1、所有的数据输入是否都进行了检查(检测正确的类型,长度,格式和范围);
2、所有参数是否经过加密传输;
3、接收到的输出值是否经过有效校验后使用;
4、本地存储是否经过加密;
5、错误是否能够被捕获;
6、无效的参数是否能够被处理。
文档
1、是否有注释并描述了代码意图;
2、是否所有方法都有注释;
3、对非常规行为和边界情况处理是否有描述;
4、数据结构和计量单位是否进行了解释;
5、是否有未完成的代码?
如果是的话,是不是应该移除,或者用合适的标记进行标记比如‘TODO’。
2.4版本控制规范
团队开发中使用Git或Svn进行项目管理。
下面只列举客户端开发人员团队开发版本控制规范:
1、配置提交策略。
使用Androidstudio进行提交代码前需要添加忽略文件,例如:
.idea文件、.gradle文件、.iml文件、local.properties文件、所有的build文件夹。
2、提交代码前必须先更新检查拉取的代码,解决冲突。
3、及时提交代码,避免大量冲突代码出现。
4、不提交未完成、为经过单元测试的代码。
5、团队开发要从基线版本(trunk)中建立分支(branch)进行开发迭代。
2.5客户端监控
客户端监控策略用于快速确定用户调用某个操作行为的成功次数、失败次数、失败率,实现业务可用性的监控。
目前可以采用对接第三方服务实现,例如友盟统计。
同时友盟提供APP错误日志上报功能,接入后可以云端存储APP使用中错误日志。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- APP 技术规范 11