Cronet 89.0.4328.0-dev

Cronet 89.0.4328.0-dev

Akshet Pande维护。



Cronet 89.0.4328.0-dev

  • akshetpandey和Chromium开发者

Cronet:适用于iOS应用的Chromium网络堆栈

Build Status Version License Platform

Cronet是作为库提供给iOS应用的Chromium网络堆栈

Cronet利用了多种技术,以减少应用所需网络请求的延迟并提高吞吐量。

这是超过十亿的Chrome浏览器用户使用的同一网络堆栈。Cronet支持Android和iOS。

本包使您能夠轻松地在iOS应用中使用Cronet。

注意:您需要禁用目标中的bitcode。

目录

功能

  • 协议支持

    Cronet原生支持HTTP、HTTP/2和QUIC协议。

  • 请求优先级

    该库允许您为请求设置优先级标签。服务器可以使用优先级标签来确定处理请求的顺序。

  • 资源缓存

    Cronet可以使用内存或磁盘缓存来存储网络请求中检索的资源。后续请求会自动从缓存中提供。

  • 异步请求

    使用Cronet库发出的网络请求默认是异步的。在等待请求返回时,您的工作线程不会被阻塞。

  • 数据压缩

    Cronet支持使用Brotli压缩数据格式进行数据压缩。

这是这个仓库是什么?

您可能想知道,如果Cronet是Chromium库,那么这个仓库是关于什么的?

没错,Cronet是Chromium库,但这个仓库不添加或不修改任何Chromium代码。正因为如此,这个仓库甚至没有任何代码。这个仓库是为了让您在不是谷歌员工的情况下更容易地在iOS应用中使用Cronet。

正如一位HN用户简洁地所说

Chromium是一个相当典型的谷歌项目,其首选的构建步骤是成为谷歌员工,但如果没有实际的可行性,也有一些可替代的解决方案。

更具体地说,这个仓库

  1. 从Chromium发布的非官方cronet构建工件中检索。
  2. 使用lipo将iphoneos和iphonesimulator框架合并,用于静态和动态构建
  3. 在GitHub上发布带有附加的静态、动态和dysm归档的GitHub发行版
  4. 将模块的静态版本发布在Cocoapods下的Cronet

安装

  1. 确保为目标禁用位码,您想链接到Cronet
  2. 使用cocoapods或手动链接框架,将Cronet.framework链接到iOS应用的workspace/project。

使用Cocoapods

  1. 在您的Podfile下添加pod 'Cronet'到您的目标位置
  2. 运行pod install

手动安装

  1. 最新版本下载你想要使用的相应存档。
  2. 解压缩存档,并将Cronet.framework文件夹通过拖拽的方式复制到你的项目中(在Xcode中)。确保在弹出的对话框中选择“如有需要则复制项”。
  3. Target -> Build Phase -> Link Binary With Libraries中添加SystemConfiguration.framework
  4. Target -> Build Settings -> Other Linker Flags中添加-lc++

使用方法

在应用程序启动流程中的某处初始化cronet。例如,在

- (BOOL)application:... didFinishLaunchingWithOptions:...

添加

[Cronet setHttp2Enabled:YES];
[Cronet setQuicEnabled:YES];
[Cronet setBrotliEnabled:YES];
[Cronet start];
[Cronet registerHttpProtocolHandler];

要查看完整的初始化选项列表,请参阅Cronet.h

已知问题

  1. Cronet库在启用bitcode的版本中不可用。因此,你必须在目标中将bitcode 禁用 以使用它。
  2. 当cronet在该会话中注册为协议处理程序时,某些NSURLSession*Delegate回调不工作。
  3. Dsym仅适用于动态框架。

许可协议

有关更多信息,请参阅LICENSE文件。