FaceBook的开源库

一. Facebook 开源项目 ATC

之前 Facebook 就介绍过针对非发达国家环境,他们 Android 端 App 所做的性能优化,包括加载速度(延迟加载、提前加载)、数据大小(WebP 格式、不同分辨率图片、缓存算法调优)、网络(支持 SPDY 协议的 OkHttp、预取算法调整)、App 大小(利用 Google Play 不同分辨率分发不同 APK)

具体可见:improving-facebook-on-android (需翻墙)

今年他们开源了一个叫 Augmented Traffic Control(ATC) 的项目,这个项目的作用就是模拟不同的网络环境,再也不用担心若网络情况无法复现了!可控制的方面包括:

  1. 带宽
  2. 时延抖动
  3. 丢包率
  4. 错包率
  5. 包重排序率 这些都是衡量网络质量的重要指标。

ATC 原理实际是利用了 Linux 流量控制系统,通过纯 Python 的网络库 pyroute2 调用 netlink 的API 控制。

二. Facebook 其他 Android 相关开源项目

Facebook 开源的 Android 相关项目,大都是偏工具类。
这恐怕也是不少人对他们的开源不够了解的原因了,因为只有到一定程度了你才能用得上这些东西。

1. buck

这个能够并行处理、支持增量编译的 Android 编译系统,比原生的编译速度快很多,对多模块的大型项目非常实用。

微信就对 Buck 进行了改造,增加 LinearAllocCalculator 和 DexMethodsCalculator 输出。

2. Stetho

这是个强大的 Android Debug 工具。
支持网络请求监控以及数据库查看,可以和 Chrome DevTools 结合或者命令行模式。

截图:
Network inspection
Database inspection

3. fa-adb

它是一个功能更强大的 adb。
没有 LF - > CRLF 识别码,区分标准输出和标准错误,支持程序退出状态(而不总是返回成功码 0),杀远程进程等。

4. shimmer-android

这是个支持 shimmer 效果的库。
shimmer

5. conceal

可用于 Android 上数据的快速加密,尤其是对于大文件。

6. Rebound

一个模仿弹簧反弹的Java库,可用于创建动画。



7. Android 图片缓存 - Fresco

GitHub:https://github.com/facebook/fresco
特点:

  • 两个内存缓存加上磁盘缓存构成了三级缓存
  • 支持流式,可以类似网页上模糊渐进式显示图片
  • 对多帧动画图片支持更好,如 Gif、WebP
  • 更多样的显示,如圆角、进度条、点击重试、自定义对焦点
  • 更多样的加载,如支持 EXIF、全面支持 WebP
  • 支持 Android 2.3+ 有兴趣参与源码分析的可以联系我哦

PS:WebP 是 Google 最早在 2010 年提出的,希望能够减少图片在网络的传输时间,在相同图片质量下,WebP 比 JPEG 和 PNG 更小。

国外 Google、FB 已经在较广泛使用 WebP 格式,国内淘宝、微信也都有使用,微信公众号的图片一般默认就是 WebP 格式的。

8. 原生应用开发框架 - React Native

GitHub:https://github.com/facebook/react-native

介绍这个开源项目必须先提下 React,React 还是 Facebook 在 2013 年中开源的用于网站 UI 开发的开源 JS 库。

React Native 就是用 React 进行 Native App 开发的框架。

应该不少人知道 FB 早期的 Android 和 iOS App 都是 H5(HTML5) 版本的,大概在 12 年因为响应太慢最终换回了 Native App,现在他们要重来了吗?

最后,Android 的小伙伴们,嗯啊,没错,这个框架目前只有 iOS 版,React Native 有很大一部分 Native Code 实现,Android 版应该还在搞。

9. 开发集成环境 - Nuclide

用于 React Native、Web 及原生移动开发的 IDE,基于 GitHub 的 Atom 构建,内部集成了 Buck 提高编译速度。Buck 在Facebook 的那些开源项目有介绍。

其他. 关于 Web App

H5 肯定会流行,这个个人觉得是势不可挡的趋势,手机端真的没必都有一个 App。

对于支持 Native App 开发,除了 React Native 外还有很多 JS 框架,虽然思路不一样,比如 React Native 的思路跟传统的 hybrid apps 就不一样,它不需要依赖 Webview,只要 JS 的运行环境即可(这点有机会再深入介绍),但在持续的尝试和探索下肯定会有一定成果。

而后端 NodeJS 已有一定市场,国内不少创业公司在用,淘宝也有尝试。codeKK 也是 NodeJS、MongoDB 简单搭建而成。

有一天 JS 被用来同时开发 Native App、Web 前后端也没什么好奇怪的,但能占到多少市场份额就不好说了。

1. Android 图片缓存 - Fresco

GitHub:https://github.com/facebook/fresco
特点:

  • 两个内存缓存加上磁盘缓存构成了三级缓存
  • 支持流式,可以类似网页上模糊渐进式显示图片
  • 对多帧动画图片支持更好,如 Gif、WebP
  • 更多样的显示,如圆角、进度条、点击重试、自定义对焦点
  • 更多样的加载,如支持 EXIF、全面支持 WebP
  • 支持 Android 2.3+ 有兴趣参与源码分析的可以联系我哦

PS:WebP 是 Google 最早在 2010 年提出的,希望能够减少图片在网络的传输时间,在相同图片质量下,WebP 比 JPEG 和 PNG 更小。

国外 Google、FB 已经在较广泛使用 WebP 格式,国内淘宝、微信也都有使用,微信公众号的图片一般默认就是 WebP 格式的。

2. 原生应用开发框架 - React Native

GitHub:https://github.com/facebook/react-native

介绍这个开源项目必须先提下 React,React 还是 Facebook 在 2013 年中开源的用于网站 UI 开发的开源 JS 库。

React Native 就是用 React 进行 Native App 开发的框架。

应该不少人知道 FB 早期的 Android 和 iOS App 都是 H5(HTML5) 版本的,大概在 12 年因为响应太慢最终换回了 Native App,现在他们要重来了吗?

最后,Android 的小伙伴们,嗯啊,没错,这个框架目前只有 iOS 版,React Native 有很大一部分 Native Code 实现,Android 版应该还在搞。

3. 开发集成环境 - Nuclide

用于 React Native、Web 及原生移动开发的 IDE,基于 GitHub 的 Atom 构建,内部集成了 Buck 提高编译速度。Buck 在Facebook 的那些开源项目有介绍。

4. 关于 Web App

H5 肯定会流行,这个个人觉得是势不可挡的趋势,手机端真的没必都有一个 App。

对于支持 Native App 开发,除了 React Native 外还有很多 JS 框架,虽然思路不一样,比如 React Native 的思路跟传统的 hybrid apps 就不一样,它不需要依赖 Webview,只要 JS 的运行环境即可(这点有机会再深入介绍),但在持续的尝试和探索下肯定会有一定成果。

而后端 NodeJS 已有一定市场,国内不少创业公司在用,淘宝也有尝试。codeKK 也是 NodeJS、MongoDB 简单搭建而成。

有一天 JS 被用来同时开发 Native App、Web 前后端也没什么好奇怪的,但能占到多少市场份额就不好说了。


以上为转载,版权归原作者所有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值