实验性 Cronet Dart 绑定

该包绑定到 Cronet 的 原生 API,在 Dart 中暴露它们。

这是一个 GSoC 2021 项目

支持的平台

目前支持 64 位 Android 和桌面平台(Linux、Windows 和 MacOS)。

要求

  1. Dart SDK 2.12.0 或更高版本。
  2. CMake 3.10 或更高版本。(如果是在 Windows 上,则需要 Visual Studio 2019 和 C++ 工具)
  3. C++ 编译器。(g++/clang/msvc)
  4. 如果目标是 Android,则需要 Android NDK。

用法

  1. 将包添加为 `pubspec.yaml` 中的依赖项。

  2. 从项目的 `根` 目录运行此命令。

    flutter pub get
    flutter pub run cronet:setup # Downloads the cronet binaries.
    

    即使我们要将它与 Dart CLI 一起使用,我们也需要使用 `flutter pub`。有关更多详细信息,请参阅 https://github.com/dart-lang/pub/issues/2606

    *Android 注意事项: 记得在 `AndroidManifest.xml` 文件中添加以下权限。

     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    可选地,通过向 `AndroidManifest.xml` 文件添加 `android:usesCleartextTraffic="true"` 来启用明文流量。

  3. 导入

    import 'package:cronet/cronet.dart';
    

注意: 下载 cronet 二进制文件需要互联网连接。

示例

  final client = HttpClient();
  client
      .getUrl(Uri.parse('http://info.cern.ch/'))
      .then((HttpClientRequest request) {
    return request.close();
  }).then((HttpClientResponse response) {
    response.transform(utf8.decoder).listen((contents) {
      print(contents);
    },
      onDone: () => print(
        'Done!'));
  });

查看与 `dart:io` 的 API 对比。

运行示例

Flutter

cd example/flutter
flutter pub get
flutter pub run cronet:setup # Downloads the cronet binaries.
flutter run

Dart CLI

cd example/cli
flutter pub get
flutter pub run cronet:setup # Downloads the cronet binaries.
dart run bin/example_dart.dart

运行测试

flutter pub get
flutter pub run cronet:setup # Downloads the cronet binaries.
flutter test

您还可以使用 `dart run cronet:setup verify` 来验证您的 cronet 二进制文件。
确保已安装 `cmake 3.10`。

基准测试

查看基准测试 摘要详细报告,以与 `dart:io` 进行比较。

flutter pub get
flutter pub run cronet:setup # Downloads the cronet binaries.
dart run benchmark/latency.dart # For sequential requests benchmark.
dart run benchmark/throughput.dart # For parallel requests benchmark.
dart run benchmark/run_all.dart # To run all the benchmarks and get reports.

使用 `-h` 查看可用的 CLI 参数和用法信息。

要了解如何设置本地测试服务器,请阅读 基准测试指南

注意:测试结果可能会受到以下因素的影响:https://github.com/google/cronet.dart/issues/11

构建您自己的

  1. 确保您已下载自定义版本的 cronet 共享库,并且文件名遵循 `cronet.86.0.4240.198.<extension>` 的模式,如果是在 `linux` 上,则带有 `lib` 前缀。否则,您可以使用 提供的说明源代码 构建 cronet。然后将库复制到指定文件夹。对于 linux,文件位于 ` .dart_tool/cronet/linux64` 下。

  2. 从项目根目录运行 `dart run cronet:setup build`。

Windows 注意事项: 从 `x64 Native Tools Command Prompt for VS 2019` shell 运行 `步骤 2`。

Android 注意事项: 将生成的 jar 文件复制到 `android/libs`,将 `.so` 文件复制到此包根目录下的 `android/src/main/jniLibs` 子目录。

GitHub

https://github.com/google/cronet.dart