1目录1概述..........................................................21.1修订目录....................................................21.2编写目的....................................................22技术规范......................................................32.1开发规范....................................................32.1.1实施规范..............................................32.1.2代码规范..............................................32.1.3命名规范..............................................42.2架构规范....................................................52.2.1项目框架搭建..........................................52.2.2安全策略.............................................102.2.3日志管理.............................................122.2.4终端适配.............................................122.3质量规范...................................................142.4版本控制规范...............................................152.5客户端监控.................................................1521概述1.1修订目录版本修订内容修订人修订日期V1.0创建文档张平2017-11-16V1.1修改优化格式排版;补充日志管理、终端适配张平2017-11-201.2编写目的该文档阅读对象为APPAndroid开发人员。通过制定技术规范,提高哈银消费金融团队开发效率、规范开发流程、提高产品质量。本文从项目实施流程规范、编程规范、质量管理规范、线上监控规范等方面论述,涵盖从项目框架搭建到版本控制、基线管理到上线全流程的行为约束及技术规范。哈银消费金融公司内部使用32技术规范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.数据一定要校验后使用,例如字符型转数字型,如果转换失败一定要有缺省值;服务端响应数据是否有效判断;哈银消费金融公司内部使用48.对于未完成的方法,使用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开发规范》。哈银消费金融公司内部使用52.2架构规范2.2.1项目框架搭建Android本身就是MVC,建议框架搭建时遵循按照职责分层的原则,保证系统的稳定性、可扩展性、可维护性,并为业务扩展、快速迭代奠定基础。哈银消费金融公司内部使用62.2.1.1基础框架搭建一、模块要求分类要求备注组织目录结构按职责定义包名可根据业务场景灵活变动基类封装1、抽象方法提取、公共方法继承、事件总线、注解框架的初始化;2、Activity栈管理器创建。不可随意更改基类中方法和结构;生命周期管理1、使用Activity栈管理activity,保证在一个生命周期中只存在一个Activity;2、封装正确的APP退出方式。坚决杜绝Activity重复创建造成生命周期紊乱;正确使用Activity启动模式公共方法提取1、一个方法超过两次调用要提取到工具类中;2、尽量使用接口回调、事件总线、广播处理跨页面通信,保证代码逻辑清晰。事件总线EventBus、Otto使用时一定做好注释,便于溯源Adapter封装列表适配器使用频次高,封装公共BaseAdapter避免大量重复代码此处建议使用开源库:BaseRecycleViewAdapterHelper注解框架控件声明及点击事件使用ButterKnife注解哈银消费金融公司内部使用7基础组件及回调封装1、高频页面或列表可以抽象成可复用组件;2、自定义控件、view;3、点击事件监听需要重点封装,避免重复提交。自定义按钮点击监听事件,防止按钮连击造成重复创建页面或处发多次接口请求2.2.1.2开源库的使用重复发明轮子不是明智的选择,例如成熟的网络框架、图片加载框架、其他成熟开源控件等的使用可以提高系统稳定性、可维护性。但是需要遵循以下要求:1、不引用未经项目实践过的开源库。2、引入开源库前需要审阅module源码,审查是否存在代码漏洞、安全隐患。3、删除无用的功能,有的开源库涵盖功能项较多,要求根据实际业务需求提取主要功能。4、做必要的二次封装。例如引用OkHttp、logger日志框架必须要做应用层封装后使用,便于维护和替换。5、开源库版本要统一配置。例如在build.gradle中统一配置dependence版本,便于团队开发维护。哈银消费金融公司内部使用82.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。哈银消费金融公司内部使用92.2.1.4数据管理分类要求备注本地数据库存储规则1、编写统一数据库管理类,包含增删改查等基础方法封装;2、数据存储要加密;3、使用ORM框架要做应用层封装。1、如果有必要,需要对数据库文件进行加密,例如SQLCipher;2、开源ORM框架可以选用GreenDAO。SharedPreference存储规则1、需要对存储内容加密;2、存储键名勿使用魔鬼字符串,要使用常量统一管理。封装SharedPreference工具类,可以选用3DES对SP内容加密上传参数做加密传输需要与后台人员协定好加密方式页面显示敏感信息要脱敏处理例如:6222*********3241哈银消费金融公司内部使用102.2.2安全策略从接口安全、账户安全、系统安全三方面加强APP安全策略。2.2.2.1接口安全策略1、防止中间人攻击前后端网络协议必须采用Https,并使用双向认证。Android必须校验后台证书信息的有效性等参数,切记不做处理直接信任所有证书。2、防止信息泄露客户端本地数据必须加密存储,包括数据库、存文件、SharedPreference等存储方式;敏感信息脱敏显示,例如身份证号、银行卡号。3、防止恶意调用哈银消费金融公司内部使用11代码添加混淆;APK打包需做加固,防止反编译、二次打包、恶意篡改。2.2.2.2账户安全1、防止账户盗用登录密码、交易密码做强加密后传输;Token超时用户下线处理——账户盗用拯救策略。2、交易安全交易密码输入需要使用Android开发自定义的安全键盘,而不是直接使用手机系统自带输入法键盘;2.2.2.3系统安全1、防钓鱼策略白名单检查时间戳检查IP检查2、防拖库撞库策略前后台密码加密存储;添加登录失败多次后锁定账号功能,防止批量尝试登录。哈银消费金融公司内部使用122.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、其他满足产品需求的适配方案。哈银消费金融公司内部使用13适配机型华为、vivo、oppo、小米、三星的主流机型哈银消费金融公司内部使用142.3质量规范质量规范是在APP项目开发过程中制定的定期对开发人员提交代码进行CodeReview的机制。Review细则如下:分类审核项备注常规项1、代码能够工作么?它有没有实现预期的功能,逻辑是否正确等;2、是否存在多余的或是重复的代码;3、代码是否尽可能的模块化了;4、是否有可以被替换的全局变量;5、是否有被注释掉的“僵尸”代码;6、循环是否设置了长度和正确的终止条件;7、是否有可以被库函数或公共方法替代的代码;8、是否有可以删除的日志或调试代码。评审标准参考章节2.