NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

揭秘《阿里巴巴 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:145293
用户头像

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

关注

评论

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

麒麟云容器运行时优化之容器停止优化

麒麟云

Kubernetes 云原生 银河麒麟云原生操作系统

“AI+算力”为出海企业打上了一剂“强心针”

千流出海

媒体 采访 出海

UML建模推荐Astah Professional for Mac激活最新

mac大玩家j

Mac软件 建模软件 建模工具

公众期待开放的自然语言处理神器

百度开发者中心

人工智能 ChatGPT 文心一言

重新定义内容创作和教育的新范式

百度开发者中心

人工智能 文心一言 文心大模型‘

OpenHarmony使用ArkUI Inspector分析布局

OpenHarmony开发者

OpenHarmony

AI应用如何进行测试?

互联网工科生

人工智能 AI

开发指导—利用CSS动画实现HarmonyOS动效(二)

HarmonyOS开发者

HarmonyOS

数字先锋|携手九江市自然资源局,天翼云助力自然资源管理走向“智治”新路

天翼云开发者社区

人工智能 云计算

程序员的五种实用工具

这我可不懂

工具 编码 代码库 RegExp

入坑ThreadLocal,这一篇文章就够了

树上有只程序猿

Java ThreadLocal

文心一言 VS 讯飞星火 VS chatgpt (86)-- 算法导论8.2 3题

福大大架构师每日一题

福大大架构师每日一题

你应该知道的几个大数据平台相关术语

行云管家

数据中台 数据安全 大数据平台

时尚行业的前沿与挑战

百度开发者中心

人工智能 ChatGPT 生成式AI 文心一言

业务不想停机,就得这么实现MongoDB迁移

NineData

mongodb 数据迁移 NineData MongoDB迁移 全量数据迁移

软件测试/测试开发丨Selenium Web自动化多浏览器处理

测试人

Python 软件测试 自动化测试 测试开发 selenium

服务器使用必备条件、操作步骤及实践步骤详解

天翼云开发者社区

服务器

NFTScan | 08.28~09.03 NFT 市场热点汇总

NFT Research

NFT\

做等保测评的公司有多少家?哪里可以查到?

行云管家

网络安全 等级保护 等保测评 等保测评机构 行云堡垒

引领未来,挑战与机遇并存

百度开发者中心

人工智能 图像识别 文心大模型

细数2019-2023年CWE TOP 25 数据,看软件缺陷的防护

华为云开发者联盟

安全 后端 华为云 华为云开发者联盟 企业号9月PK榜

ClickHouse在腾讯游戏营销效果分析中的探索实践

腾讯云大数据

Clickhouse

蚂蚁集团混沌工程 ChaosMeta V0.5 版本发布

ChaosMeta

云原生 测试 混沌工程 容灾 攻防演练

Kruise Rollout:基于 Lua 脚本的可扩展流量调度方案

阿里巴巴云原生

阿里云 云原生

在线找 K8s 学习搭子,急!

阿里巴巴云原生

阿里云 云原生

Autodesk AutoCAD 2021 for mac(cad2021) v2021.1.2永久激活版

mac

苹果mac Windows软件 CAD设计软件 AutoCAD 2021

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