实验性 Cronet Dart 绑定
该包绑定到 Cronet 的 原生 API,在 Dart 中暴露它们。
这是一个 GSoC 2021 项目。
支持的平台
目前支持 64 位 Android 和桌面平台(Linux、Windows 和 MacOS)。
要求
- Dart SDK 2.12.0 或更高版本。
- CMake 3.10 或更高版本。(如果是在 Windows 上,则需要 Visual Studio 2019 和 C++ 工具)
- C++ 编译器。(g++/clang/msvc)
- 如果目标是 Android,则需要 Android NDK。
用法
-
将包添加为 `pubspec.yaml` 中的依赖项。
-
从项目的 `根` 目录运行此命令。
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"` 来启用明文流量。
-
导入
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!'));
});
运行示例
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。
构建您自己的
-
确保您已下载自定义版本的 cronet 共享库,并且文件名遵循 `cronet.86.0.4240.198.<extension>` 的模式,如果是在 `linux` 上,则带有 `lib` 前缀。否则,您可以使用 提供的说明 从 源代码 构建 cronet。然后将库复制到指定文件夹。对于 linux,文件位于 ` .dart_tool/cronet/linux64` 下。
-
从项目根目录运行 `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` 子目录。