写点什么

Facebook 和 Instagram 的经验:面向新兴市场改进 Android 开发

  • 2014-11-16
  • 本文字数:1915 字

    阅读完需:约 6 分钟

@Scale 2014 大会上,来自 Facebook 和 Instagram 的工程师做了题为《 Scaling Android Apps for Emerging Markets 》的演讲,就如何面对不同的 Android 设备和不同的网络连接速度改进其应用的表现分享了相关经验。

Facebook

Facebook 将团队送到了亚洲、非洲、中美洲和南美洲的一些国家,去评估当地的手机市场。他们购买和使用了当地流行的设备,以了解在这些设备上访问 Facebook 的应用时的用户体验。Chris Marra 是 Facebook 的 Android 开发产品经理,他就这些新兴市场中 Android 设备和网络连接情况分享了一些发现:

  • 通常访问 Facebook 的设备模型有 10 000 种左右
  • 在发展中国家,有两种占据统治地位的移动设备:功能机和低端入门级 Android 手机
  • 这些设备通常是使用上一代硬件制作的
  • 互联网连接还属于高级服务,存在网络堵塞
  • 手机较慢,屏幕较小,网络连接状况往往比较差
  • 美国的 3G 网络覆盖率达 70%,而像巴西和印度,覆盖率分别是 38% 和 7%

在给这些市场把过脉之后,Facebook 就开始改进其应用了。他们发现,因为内存有限,经常会导致 OutOfMemory 错误,使用较老手机的用户碰到应用崩溃的情形明显要多得多,所以他们决定提供一个不同的版本,以确保应用在这类设备上运行更平滑。因为用户在较老的手机上体验不好,Facebook 不得不砍掉了动画和其他很耗 CPU 的界面操作。

在看到了应用在某些低端手机上的表现情况之后,Facebook 创建了一些工具,帮助团队了解存在的问题,同时开始改进在这类设备上的用户体验。屏幕大小是必须考虑的一个因素,10% 的 Facebook 用户使用的是分辨率较低(120 DPI)的手机。开发团队决定裁剪用户界面,去掉或者简化窗口小部件(widget)和图标。

Facebook 的工程经理 Andrew Rogers,详细介绍了他们为改进用户体验所做的一些步骤。

图片大小。在 Facebook 的 Android 应用上,图片数据占到了 85%。在 Facebook Messenger 应用中,图片数据占到了网络传输数据量的 65%。应该尽可能减小图片大小。这是通过如下手段实现的:

  • 在服务器上调整图片大小
  • 提供分辨率不同的多份图片:用于新闻摘要(feed)的预览图、用于个人信息显示的缩略图和用于照片存储的较大的图
  • 根据屏幕大小下载小型图片
  • 只有用户放大的时候才使用全尺寸图片;大部分时间,用户只需要较小的缩略图或预览图
  • 在 Android 上,90% 的图片使用 WebP 格式,与 JPEG 格式相比,质量相同的图片大小要小 30%。存在的问题是,Android 4.2+ 才提供了对 WebP 的原生支持,所以之前的 Android 版本上,还需要在设备上将图片转码成 PNG 或 JPEG

网络质量。Facebook 意识到,根据网络类型来确定网络速度还不够。尽管使用的是同样的技术,如 Edge、HSPA 或 LTE 等,某些国家的网络速度可能会比其他国家慢 2 到 3 倍。像印度或巴西,WiFi 的速度要比 LTE 慢,所以最好动态确定真实的网络速度。

为减少下载时间,他们决定:

  • 进一步压缩图片
  • 发出更多并行的请求
  • 关闭自动播放
  • 预取更多内容

为了能够在部署之前在不同的网络上测试其应用,Facebook 创建了 Air Traffic Control 这款工具来模拟 WiFi 上的不同网络连接类型,它能够配置最大带宽、丢包率、上行线路 / 下行线路的往返时延。

预取内容。Rogers 提到的另一个改进用户体验的方式是预取某些内容。对于延迟较高的网络,这特别有用。但是预取也不能过度使用,因为这会填充缓存,再就是预取的数据不能肯定会用到。

Instagram

Tyler Kieft 是 Instagram 的一位 Android 开发工程师,他介绍了他们团队为改进其 Android 应用的性能和用户体验所做的一些调整。其一是使用现代的扁平式设计重写了界面,去掉了渐变效果、抛光色彩和阴影等,这在各种 Android 设备上都带来了性能提升。

扁平化设计还带来了一个效果,实现了资源裁剪。应用不再需要各种颜色的资源,而是只有一种颜色即可。Instagram 将应用的一个视图所需要的资源从 29 个减少到了 8 个。其结果是,UI 显示提速,占用的内存空间减少,冷启动时间下降了 120 毫秒。此外,用户对于新的界面和性能改进反应非常积极。

据 Kieft 介绍,为确定哪里比较慢,他们使用 Android Traceview 和计时语句分析了应用的性能。 然后采用了下列措施:

  • 从冷启动路径中去掉较慢的东西
  • 重写了较慢的代码
  • 将一些东西延迟到一个后台线程中
  • 重复以上步骤(分析、重写)

他们还使用了两步的惰性加载:在 UI 线程上创建单件(singleton)对象,但是在这些对象上执行的动作,比如访问 cache 的磁盘存储信息、加载 HTTP 客户端的证书和反序列化 cookies 等,都放到了一个后台线程上。

另一个减少应用冷启动时间的手段是,使用原生代码代替 WebView,在不同版本的 Android 上,平均节省了 30% 的时间。

查看英文原文: Facebook & Instagram Lessons on Android Development for Emerging Markets

2014-11-16 00:222670
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 143.9 次阅读, 收获喜欢 35 次。

关注

评论

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

没有设计稿也能很漂亮,非常适合独立开发:Trae + 飞个马MCP

秦少卫

#开源项目 开源图片编辑器 #AI编程

AI口语陪练APP的开发

北京木奇移动技术有限公司

AI技术开发 软件外包公司 AI口语练习

尽快自查、更换!你的DDNS/内网穿透服务商可能即将关停

科技热闻

BGE系列再升级:代码检索及多模态向量模型刷新多项领域基准

智源研究院

超越数字:利用数据可视化推动企业战略决策

智达方通

企业管理 全面预算管理 超越预算

「华为」持续加码人形机器人赛道!

机器人头条

华为 大模型 人形机器人 具身智能

非凸科技受邀出席“第二届人工智能应用大会”,共话AI赋能产业新未来

非凸科技

520表白神器

电子尖叫食人鱼

前端

在鸿蒙中如何进行线程通信

Geek_b896c3

鸿蒙 HarmonyOS HarmonyOS NEXT

可视化编程基座:iVX 重构高校智慧校园开发范式的技术路径

代码制造者

低代码 智慧校园 无代码

PD 分离推理的加速大招,百度智能云网络基础设施和通信组件的优化实践

百度Geek说

大型前端应用如何做系统融合?

京东科技开发者

AI需要 DePIN,就像汽车需要道路

PowerVerse

AI 去中心化 区块链+ web3 DePIN

深度解读「摩根士丹利」双研报:头部人形机器人、核心供应链公司梳理和投资分析(附报告)

机器人头条

机器人 科技 人形机器人 具身智能

【实用教程】如何快速搭建一套私有的埋点系统?

ClkLog

开源 埋点 sdk 用户行为分析 画像

区块链web3软件的性能优化

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

新华三推出AI数据平台解决方案,加速推理驱动智算时代

业界

实时通信优化探索,吞吐量与延迟的最佳平衡

腾讯云音视频

音视频 音视频技术

从“名落孙山”到“金榜题名”?能考清北的AI来了!

科技热闻

Kafka Linking:揭秘 AutoMQ 如何实现全球首个Zero-Downtime Kafka 迁移方案

AutoMQ

Java 云计算 kafka 中间件 AutoMQ

联想控股·和鲸科技首期AI通识课圆满举办

ModelWhale

uni-app打包小程序教程(包括隐私协议设置)

CRMEB

构建AI时代的大数据基础设施-MaxCompute多模态数据处理最佳实践

阿里云大数据AI技术

数据分析 MaxCompute 人工智能、 AI‘’ #大数据

微软宣布的五大重要事项|AI日报0520

石臻臻的杂货铺

大厂B端/G端数据可视化项目如何做设计评审

京东科技开发者

代码革命的先锋:aiXcoder-7B模型介绍

京东科技开发者

轻松get热播剧同款“数字名片”!合合信息名片全能王助力保险拓客

合合技术团队

人工智能 #大数据

深度解读「摩根士丹利」双研报:头部人形机器人、核心供应链公司梳理和投资分析(附报告)

机器人头条

科技 大模型 人形机器人 具身智能

智造突围:管材制造业如何借力MES系统破解产能困局

万界星空科技

制造业 mes 数字化工厂 管材行业 管材制造业

探索自定义地图样式,打造应用专属个性化地图

HarmonyOS SDK

harmony

数字化设备巡检方案,解决错检漏检、只巡不检等痛点现象!

积木链小链

智能制造 设备管理 设备管理数字化

Facebook和Instagram的经验:面向新兴市场改进Android开发_Meta_Abel Avram_InfoQ精选文章