Facebook Open Source项目介绍(Android篇)

来源:互联网 发布:通信软件slack 编辑:程序博客网 时间:2024/06/06 09:43

FB Open Source项目地址(可能需要翻墙):https://code.facebook.com/projects/android

github地址:https://github.com/facebook


1. redex

此项目是一个Android APK字节码优化工具,可以使你的apk包更小,运行速度更快。

用redex处理过apk以后需要重新签名。


2. Infer

此项目是一个针对Android和IOS应用的静态分析工具,由OCaml语言编写的Infer目前能检测出空指针访问、资源泄露以及内存泄露,可对C、Java或Objective-C代码进行检测。Facebook使用Infer自动验证iOS和安卓上的移动应用的代码,bug报告的正确率达80%。Infer通过捕获编译命令,把要被编译的文件转换为可用于分析潜在错误的中间语言格式。整个过程是增量进行的,意味着通常只有那些有修改过并提交编译的文件才会被Infer分析。Infer还集成了大量的构建或编译工具,包括Gradle、Maven、Buck、Xcodebuild、clang、make和javac。


3. Stetho

此项目是一个强大的Android调试工具,使用该工具你可以在Chrome Developer Tools查看App的布局,网络请求,sqlite,preference,一切都是可视化的操作,无须自己在去使用adb,也不需要root你的设备。使用的方式很简单,配置好之后,在Chrome地址栏输入chrome://inspect 。


4. Network Connection Class

此项目是一个Android SDK,用于监听App当前网络流量以及将其按照网络质量进行分类。连接被分为几个“Connection Classes”,使它开发变得容易。该类库通过监听APP中现有网络的流量,以及当用户的网络连接质量发生变化时进行提醒。开发者可以利用“Connection Classes”的信息,以及调整应用程序的行为(请求低质量图像或视频、 throttle type-ahead等)。Network Connection Class目前仅仅测量用户下行的带宽。


5. React Native

React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件,代替 DOM 元素来渲染等。

React Native 使你能够使用基于 JavaScript 和 React 一致的开发体验在本地平台上构建世界一流的应用程序体验。React Native 把重点放在所有开发人员关心的平台的开发效率上——开发者只需学习一种语言就能轻易为任何平台高效地编写代码。Facebook 在多个应用程序产品中使用了 React Native,并将继续为 React Native 投资。


6. makeitopen

好像是一个学习FB open source的网站。


7. rebound

Rebound是Facebook推出的一款Android的物理和动画库,于2013年10月在Mobile@Scale大会上正式发布,旨在解决笨重、缓慢的传统移动网络界面。Rebound基于BSD许可协议,兼容HTML5和Node.js。

Rebound不是一款通用物理库,但其弹簧模型在应用程序中引入了现实世界的物理,易于集成,创建的动画能够让人感觉到非常自然,可用于滚动条、切换开关、呼叫等场景下。


8. buck

Buck是Facebook开发的一款开源Android Build工具,基于Apache License 2.0协议发布,可以通过独立构建并行来发挥多核的性能,加速开发者的Android应用构建流程。Buck基于单一的库构建,能够以最小的资源集重建,非常适用于Android项目组织与管理。

主要特性:

  • 加速Android构建。充分发挥多核处理器的优势,并行构建独立模块。通过追踪没有变化的源文件,减少增量构建实践,最少化需要重建的资源。
  • 对于不支持开箱即用的Android Ant编译脚本,引进ad-doc构建系统。
  • 在构建系统里保持生成构建的逻辑,无需另外的系统生成构建文件。
  • 基于构建规则生成一个Intellij项目,能同时匹配本地IDE以及无头文件编译开发。
  • 支持单元测试,选用最均衡的方式获得代码覆盖率。


9. conceal

Conceal提供了一套用于Android平台上进行文件加密和鉴权的Java API,专为速度设计,小巧而高速。它使用了OpenSSL算法的子集和一些预先定义的选项,能够让库保持在较小的体积。通过它,开发者可以实现对手机、平板电脑SD卡中的数据以及大型文件进行加密和存储。


10. Device Year Class

Android平台的开源库,用于分析设备并计算哪一年你的设备会被认为是“high end”,实际上就是获取设备基本信息,并为你的设备分级。主要功能是根据 CPU核数、时钟频率 以及 内存大小 对设备进行分级。代码很简单,只包含两个类:

  • DeviceInfo -> 获取设备参数,
  • YearClass -> 根据参数进行分级。

下表是 Facebook 公司提供的分级标准,其中 Year 栏表示分级结果。

YearCoresClockRAM20081528MHz192MB2009n/a600MHz290MB2010n/a1.0GHz512MB201121.2GHz1GB201241.5GHz1.5GB2013n/a2.0GHz2GB2014n/a>2GHz>2GB

0 0