阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

揭秘《阿里巴巴 Android 开发手册》

  • 2018-04-03
  • 本文字数:2312 字

    阅读完需:约 8 分钟

前言

不久之前谷歌的 Android P 预览版问世,几大手机厂商也联合推出了快应用,我们看到了移动开发迎来了新的活力,移动应用已经渗透到人们生活的方方面面,那么阿里继去年推出 Java 手册之后,在春节期间推出的《阿里巴巴 Android 开发手册》的目的是什么呢?为此,InfoQ 第一时间采访了阿里巴巴高级无线开发工程师、手册的主要作者之一芸墨,为大家揭开其背后创作故事,并在此与大家分享采访结果。

Android 开发手册有哪些内容?

《阿里巴巴 Android 开发手册》全篇分为 9 个章节,分别是 Java 语言规范,Android 资源文件命名与使用,Android 基本组件,UI 与布局,进程、线程与消息通信,文件与数据库,Bitmap、Drawable 与动画,安全及其他内容,即主要涵盖了 Android 开发的性能、安全性和稳定性问题。作者认为这些章节不分主次,都是开发者在进行业务开发时容易忽视的问题,大家可根据实际情况参考。

Android 开发手册是怎样诞生的?

阿里做这件事的初衷源于双十一,由于每年在双十一准备期间都要成立专家组去集中扫荡线上 crash,把 crash 率降到 0.1% 以下,修复 bug 以后,可能在不久的将来又会重现,那如何把专家的经验沉淀下来得以复用呢?

在这些过程中,他们把一些常见 crash 的分析沉淀了下来,把一些结合 codestyle 写到了阿里 Android 开发手册里,还有一些写成了自定义规则放到了持续集成平台和 IDEA 插件里,比如常见的 CursorWindowAllocationException、SuperNotCalledException 和 ConcurrentModificationException 这一类的问题。后来他们想把这些好的经验开放出来跟大家一起分享,所以《阿里巴巴 Android 开发手册》就面世了。

然而手册发布之后,在引起高关注度的同时,也引发了不少读者的质疑,很多人认为阿里在技术分享上动作频频,连发两个手册,是否是内部 KPI 推动的结果。对此,芸墨表示这并不是 KPI 任务,各研发团队的主管并没有给大家硬性指标,手册的编者都是集团各大 APP 的一线业务开发者,来自淘宝、天猫、闲鱼和支付宝等团队,他们都是自发地组成一个虚拟项目组,本着前人栽树后人乘凉,前人踩坑后人平路的心态,总结日常中解决的诸如性能、稳定性、安全、UI 适配等问题的经验,并在日常的业务工作之余完成了手册的内容。

三个等级划分的标准是什么?

不管是之前 Java 手册还是现在的 Android 手册,阿里都按照约束力强弱将规则划分了强制、推荐、参考三个等级,对于这几个等级的制定,芸墨是这么解释的:

(1)把会造成线上稳定性问题、严重的性能问题和展示问题,常见的安全问题的写法定义为【强制】级别的。

(2)把一些阿里的最佳实践和一些经验沉淀定义为【推荐】级别的,比如很多开发者最近都在问的“文本大小使用单位 dp 这一条是不是有问题,难道不是应该用 sp 吗?”

实际上,在 App 在开发时,视觉都是设计好了整体 UI 布局和控件的尺寸、位置,根据操作系统字体大小设置动态调整 app 字体会造成开发成本高到不可承受。在 Android 上,很多 App 对文本采用了 sp 作为单位,事实上就造成了它们的 UI 在字体大小变化的情况下完全无力适配,内容显示异常。所以,约定的时候就考虑到了现实情况。如果一个产品在设计的时候就已经考虑到对字体设置的需求,那是可以无视这一条;只是大部分的 app 在设计的时候视觉交互其实只有一套,对他们来说的话如果忽略了这个问题用 sp 就会造成 UI 显示的缺陷。

(3)把一些阿里内部各个团队自己的约定定义为【参考】,即大家可以自行决定是否使用。

如果规范与需求发生冲突,该如何应对?

一般说来,产品经理需要保证自己需求的还原性和整体体验,开发者也希望自己写出的代码美观整洁 bug 少,大家都是同一战线的伙伴,但是手册中明令禁止的行为可能会对产品的可用性造成很严重的影响,会影响产品的线上使用,所以芸墨并不赞成开发者违背规范中强制的内容,而对于推荐和参考的内容,只要不影响产品的用户体验,开发者择优选择即可。

Android 手册面向哪些开发者?

虽然手册面向的主要是 Android 开发者,非 Native 的开发者如果指纯 H5 的开发者那可能跟规约并没有直接联系,如果指的是 RN 这种新兴的动态化框架的话,那么规约在性能优化、安全等方面依旧是可以为他们提供开发上的参考。

再者,芸墨认为,无论是 H5、RN、微信小程序的开发,还是 IOS/Android 原生开发,在 UI framework 这个层面原理是相通的,并不是新技术新框架出现了,已有的框架就被完全推倒重来。其次,RN、微信小程序越来越受关注是因为他们体现出来的组件化、动态化、快速部署的能力对原生开发者产生了巨大的吸引力,但是在这个过程中,JavaScript 扮演的更多的是一种 DSL(domain specific language)的角色,而不是说一看到 JavaScript 就等同于前端开发,他们本质上还是运行在原生操作系统上的,所以 Android 手册里的内容对那些学习新框架的 Android 原生开发者仍是不可或缺的基础。

关于未来

对于 Android 手册,阿里会时刻关注和及时回复线上的用户反馈,前期保持一个月一版本的迭代速度,中后期会根据 Android 的系统更新情况半年一次迭代,并表示 iOS 开发手册内部版本正在筹划对外开放中,敬请期待~

Android 手册的内容都是阿里集团业务开发者的经验总结,也结合了 Google 和业界的一些最佳实践,去年已经在集团内部公示过很久,也得到了广泛的认可。一个行业标准手册出之不易,阿里表示他们会秉持着开放的态度,欢迎业内同行一起参与意见反馈和完善工作,这是他们愿意见到的行业幸事。

手册下载链接

http://click.aliyun.com/m/44351/

受访嘉宾简介

龚能(花名:芸墨)阿里巴巴高级无线开发工程师,2014 年入职阿里巴巴,主要负责集团无线静态代码扫描体系建设和持续集成平台开发,《阿里巴巴 Android 开发手册》的主要作者之一。

2018-04-03 18:145759
用户头像

发布了 83 篇内容, 共 50.5 次阅读, 收获喜欢 187 次。

关注

评论

发布
暂无评论
发现更多内容

算法:八皇后问题

看山

面试 算法 6月日更

在线时间戳格式化转换工具【推荐】

入门小站

工具

打造一个通用、可配置、多句柄的数据上报 SDK

魅影

sqlite 数据库 APM 多线程 数据上报

HarmonyOS学习路之开发篇——Intent

爱吃土豆丝的打工人

HarmonyOS Ability intent 页面跳转

降低网络AI应用开发门槛,AIOps两大部署模式来助力

华为云开发者联盟

运维 RPA 自动化 AIOPS 华为云AIOps

我的小程序开源啦~

悟空聊架构

小程序 刷题 SpringCloud passjava 6月日更

【21-14】singularity介绍

耳东@Erdong

6月日更 singularity

校友会小程序开发笔记九: 校友群助手功能模块设计与实现

CC同学

校友会小程序 同学录小程序

校友会小程序开发笔记十: 校友资讯功能模块设计与实现

CC同学

校友录小程序 同学录小程序

校友会小程序开发笔记十一: 后台管理系统功能设计与实现

CC同学

校友录小程序 同学录小程序

Linux之rm命令

入门小站

Linux

react源码解析17.context

全栈潇晨

React

公安局指挥中心一体化管理系统,情指勤合成作战

Python——有序字典 (OrderedDict)

在即

6月日更

JAVA面向对象(九)--继承

加百利

6月日更

从Linux零基础小白到Linux云计算架构师的成长之路!

学神来啦

Linux 运维 运维自动化

【Vue2.x 源码学习】第二十一篇 - 依赖收集的过程分析

Brave

源码 vue2 6月日更

浪潮云说丨构建实时监控能力,提升应用质效

云计算

EasyRecovery---视频文件恢复技巧

淋雨

数据恢复 EasyRecovery 文件恢复 免费恢复软件 硬盘数据恢复

技术部门Leader:如何平衡技术能力与项目管理能力?

万事ONES

项目管理 研发管理 技术管理 ONES

数据库在各行各业的应用实践

xcbeyond

数据库 最佳实践 6月日更

Python线性预测

Qien Z.

6月日更 线性预测

都有哪些较好用的项目管理软件?

万事ONES

项目管理 研发管理 ONES 研发工具

你会写注释吗?

看山

Java 6月日更

十亿级流量下,我与Redis时延小突刺的战斗史

vivo互联网技术

redis Jedis 调用链 流量防控

技术生态两手抓,打造面向未来的企业级领先数据库

华为云开发者联盟

数据库 开源 云原生 华为云 GaussDB

ONES x 知名车企 | 软硬件研发项目管理实践

万事ONES

项目管理 研发管理 ONES

算法之寻找二叉树结点的最近公共祖先

Skysper

算法

深入了解Spring之事件机制

邱学喆

观察者模式 spring的事件机制 EventListener注解

App 上架包预检

魅影

ios Node 代码扫描 脚本 应用审核

spring boot 自动装配原理详解

公众号:程序猿成神之路

Spring Boot

揭秘《阿里巴巴Android开发手册》_Android/iOS_覃云_InfoQ精选文章