Cronet 库编译指南

13 篇文章 2 订阅


Cronet 库是谷歌开发的移动端网络库。支持 HTTP、HTTP/2 以及 QUIC 协议。支持 Android 和 iOS 平台。
其编译工具是 gn 和 ninja,类似于 cmake 与 make 的关系。
下面介绍 Cronet 库的编译及编译注意事项。

1、获取源码

iOS 的必须在 mac 下编译,Android 必须要 linux 平台下编译。源码获取细节具体参考此博客Get Chromium source code

  • 1.1 安装 depot_tools 工具
    在任意目录下载 depot_tools 源码,并将该项目根目录添加到 PATH,从而可以使用其工具比如 fetch。
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  • 1.2 拉取 chromium 源码
    这里需要区分是拉取 Android 平台的,还是 iOS 平台的。
mkdir chromium
fetch --no-history --nohooks  android      # fetch --no-history  ios

此时 chromium 目录会生成一个 ‘.gclient’ 隐藏文件,若中间拉取失败,可以执行 gclient sync 继续拉取,
拉取结束后,该目录会生成一个 src 目录,包含 cronet 源码。

如果要拉取指定版本的 chromium 源码,还需执行以下步骤,注意需要都执行成功,否则会出现编译失败:

git fetch origin 75.0.3770.142
git checkout -b chromium-ios-75.0.3770.142 FETCH_HEAD
gclient sync --with_branch_heads

2、编译

编译环境要求:

  • Linux:python 2.7.5,及 openjdk 8,较高版本由于接口不兼容需避免使用。
  • Mac: python 2.7.5,openjdk 8,以及 xcode。
    进入 chromium/src 目录,执行下面命令,
 ./components/cronet/tools/cr_cronet.py gn --out_dir=out/Cronet    # 生成 ninja 文件
 ninja -C out/Cronet cronet_package                                                # 输入 ninja 文件执行编译,必须指定为 cronet_package

若要编译 cronet 库的 Release 版本,在生成 ninja 文件时需要添加 ‘–release’ 选项。
另外 iOS 版本会区分模拟器和真机,区别是 cpu 架构不一样,模拟器使用 x86 架构,真机使用的 ARM 架构。
上述 cr_cronet.py 命令默认生成模拟器版本的库,生成真机的库需要添加 ‘-i’ 选项,同时必须具有 iOS 开发者证书,并在 xcode 中配置好,
生成真机的 Release 库,使用如下命令:

 ./components/cronet/tools/cr_cronet.py gn -i --release --out_dir=out/Cronet-iphoneos-release 

3、生成的文件

iOS 库:

  • out/Debug-iphonesimulator/obj/components/cronet/ios/libcronet.a, 大小为 89M;
  • out/Debug-iphonesimulator/obj/components/cronet/ios/libcronet_static.a, 大小为 17M;
  • out/Debug-iphonesimulator/obj/components/cronet/ios/libcronet_deps_complete.a,大小为 1G。

Android 库:

  • out/Cronet-android/lib.java/components/cronet/android/ 所有 jar 包在此目录下;
  • out/Cronet-android/libcronet.77.0.3825.0.so,strip 后的库,6M;
  • out/Cronet-android/lib.unstripped,未 strip 的库在此目录下。

这里 strip 掉的主要应该是 debug info,具体 strip 内容暂不清楚。

4、错误记录

  • 无 iOS 开发者证书,编译真机库失败。

参考链接

cronet 编译
拉取 chromium 指定版本的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值