facebook开源项目
一. Facebook 开源项目 ATC
之前 Facebook 就介绍过针对非发达国家环境,他们 Android 端 App 所做的性能优化,包括加载速度(延迟加载、提前加载)、数据大小(WebP 格式、不同分辨率图片、缓存算法调优)、网络(支持 SPDY 协议的 OkHttp、预取算法调整)、App 大小(利用 Google Play 不同分辨率分发不同 APK)
具体可见:improving-facebook-on-android (需FQ)
今年他们开源了一个叫 Augmented Traffic Control(ATC) 的项目,这个项目的作用就是模拟不同的网络环境,再也不用担心若网络情况无法复现了!可控制的方面包括:
- 带宽
- 时延抖动
- 丢包率
- 错包率
- 包重排序率 这些都是衡量网络质量的重要指标。
ATC 原理实际是利用了 Linux 流量控制系统,通过纯 Python 的网络库 pyroute2 调用 netlink 的API 控制。
二. Facebook 其他 Android 相关开源项目
Facebook 开源的 Android 相关项目,大都是偏工具类。
这恐怕也是不少人对他们的开源不够了解的原因了,因为只有到一定程度了你才能用得上这些东西。
1. buck
这个能够并行处理、支持增量编译的 Android 编译系统,比原生的编译速度快很多,对多模块的大型项目非常实用。
微信就对 Buck 进行了改造,增加 LinearAllocCalculator 和 DexMethodsCalculator 输出。
2. Stetho
这是个强大的 Android Debug 工具。
支持网络请求监控以及数据库查看,可以和 Chrome DevTools 结合或者命令行模式。
截图:
3. fa-adb
它是一个功能更强大的 adb。
没有 LF - > CRLF 识别码,区分标准输出和标准错误,支持程序退出状态(而不总是返回成功码 0),杀远程进程等。
4. shimmer-android
这是个支持 shimmer 效果的库。
5. conceal
可用于 Android 上数据的快速加密,尤其是对于大文件。
6. Rebound
一个模仿弹簧反弹的Java库,可用于创建动画。
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 版应该还在搞。