AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

从基于 Web 的应用到原生应用的迁移看 Facebook 的发布流程

  • 2014-01-05
  • 本文字数:1011 字

    阅读完需:约 3 分钟

来自 Facebook 的 Chaitanya Mishra 在上月的 Velocity Conf London 上发表了演讲,描述了Facebook 将其Android 应用从Web View 视图转换为全面原生应用的方法。为了达成该目标,各个产品团队只负责自己特性。为了使分布开发模型能够正常工作,由一个核心团队负责回归测试并专注于整体应用的优化而不是某个特性的优化。

因为对于用户来说,升级到应用的新版本(包括修复)决定于第三方的审核以及用户想升级的想法,所以需要对适用于 Web 开发持续交付模型做一些调整,使其适用于快速迭代的 Android 开发。当构建失败时快速反映给开发人员,内部试用新发布版本(在发布到应用商店的 4 周之前先内部发布给员工试用)并监测其使用情况(碰到功能错误或性能问题时及时反馈给开发人员),该措施提升了对外发布的信心。在这 4 周时间里,在一个发布分支中修复问题,该分支与主分支(在主分支中不断加入并测试新功能,作为将来的发布功能)是并行的。

除了功能和性能测试(使用 Selendroid 通过界面进行)外,其他在构建过程中针对 Android 应用的检查还包括:应用的大小(是否有变更会意外增加应用的大小),内存使用率以及电源消耗(实际的电池使用)。Chaitanya 举了一个例子,团队发现一个很明显的电源消耗增大却又无法解释的问题,最终证明是一个微不足道的变更导致的,该变更是为了阻止应用进入休眠模式而采用的轮询机制。

应用发布出去之后,Facebook 使用 Analytics Logger 监控应用的性能和问题。反馈的数据使用一种叫做 Scuba 的工具进行分析。Chaitanya 又举了个例子,他们发现数据库崩溃的次数越来越多。他们怀疑是用户设备的可用空间过低导致的,所以他们就增加了剩余空间检测功能,结果发现确实是应用占用了过多的空间,这都是应用分配甚至复制整个数据库,超大缓存,还有一些不必要的文件导致的。问题经过修复后,数据库崩溃的频率明显降低。

尽管应用已经成功转换为完全本地化应用,但是让 Chaitanya 担心的是,向本地化转化后不稳定现象会偶尔出现,尤其是一些不常用的功能还是基于 Web 实现的。根据 Chaitanya 的说法,依赖 Web 的缺点是需要尽可能保持与网站 API 的向后兼容。

查看英文原文: Facebook’s Release Process Behind the Move from Web-based to Native App


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-01-05 06:042278
用户头像

发布了 28 篇内容, 共 11.0 次阅读, 收获喜欢 0 次。

关注

评论

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

《近匠》棱镜:手游渠道SDK平台的技术历程

android 程序员 移动开发

【透镜系列】看穿 _ 触摸事件分发 _

android 程序员 移动开发

「正确」的使用Kotlin Flow进行搜索优化

android 程序员 移动开发

【Android】仿斗鱼滑动拼图验证码控件

android 程序员 移动开发

【Android面试查漏补缺】之Handler详解,带你全面理解Handler消息机制

android 程序员 移动开发

【基础01】Android 开发到底是做什么?

android 程序员 移动开发

【自学Flutter】20

android 程序员 移动开发

快速创建一个Django项目,Python环境也给你安排了

老表

Python django 个人博客 web开发 11月日更

【Android FrameWork】综合面试问题

android 程序员 移动开发

【建议收藏】面试没亮点?给你一份Android热门三方库源码面试宝典及学习笔记

android 程序员 移动开发

【Android进阶学习】Android-广播接收器(Broadcast-Receivers)

android 程序员 移动开发

【CSDN插件测评】效率增倍,程序猿开发必备插件

android 程序员 移动开发

【整理篇】Flutter 常用第三方库、插件

android 程序员 移动开发

【淘系技术】超详解析Flutter渲染引擎_业务想创新,不了解底层原理怎么行

android 程序员 移动开发

【Android进阶笔记】虚拟机(Dalvik

android 程序员 移动开发

【Flutter 专题】123 图解简易 GroupList 二级分组列表

android 程序员 移动开发

【Java转Android】50

android 程序员 移动开发

【CSS Master】选择器四种基本类型

devpoint

CSS CSS语法 11月日更

【自学Android】使用DataBinding,ViewModel,LiveData完成点赞小功能

android 程序员 移动开发

【自学Flutter】18 TabBar、TabBarView

android 程序员 移动开发

【Java转Android】34

android 程序员 移动开发

解构服务风险治理

方勇(gopher)

微服务 OLAP SRE 服务治理 构架

【自学Flutter】3

android 程序员 移动开发

【Android-Jetpack】Lifecycle-从入门到精通

android 程序员 移动开发

【Flutter桌面篇】Flutter&Windows应用尝鲜

android 程序员 移动开发

【干货】Android 一线互联网面试题汇总,13模块200

android 程序员 移动开发

【干货推荐】Android市场今非昔比,Android开发者该学习哪些东西提高竞争力

android 程序员 移动开发

【技术漫谈】Android高手进阶,这个必须要学 !

android 程序员 移动开发

一个34岁出来面试还被拒绝的Android程序员有多惨?

android 程序员 移动开发

《基于Android微博整合客户端的设计与实现》毕业设计中期考核表

android 程序员 移动开发

【面试总结】Android-开发者值得深入思考的几个面试问答分享

android 程序员 移动开发

从基于Web的应用到原生应用的迁移看Facebook的发布流程_Meta_Manuel Pais_InfoQ精选文章