chromium-net

chromium-net 是一个独立的网络库,它包含了著名的开源浏览器 Chromium 项目中网络相关的代码,包括 net 库,url 库,SSL 库,以及 Android 平台的 Java 封装等。它同时还是一个跨平台库,可以应用于 Android 等移动平台。

chromium-net 库的优势:

全平台支持最新版TLS。不像 OkHttp 这样依赖系统提供 SSL/TLS 加解密功能的网络库,chromium-net 自身包含 SSL 库,因而可以全平台支持安全性更高的最新版 TLS。

全平台支持 HTTP/2。HTTP/2 的协议协商,需要用到 TLS 较新的扩展 ALPN,同时 HTTP/2 对 TLS 加密套件也有一定的要求,由于自身包含 SSL 库,使得 HTTP/2 的这些要求在任何平台都变得易于满足。

全平台支持 QUIC 协议。chromium-net 目前是 Android 平台支持 QUIC 协议仅有的选择。

在Linux平台上构建

克隆本仓库

$ git clone https://github.com/hanpfei/chromium-net.git

$ cd chromium-net

如果你是第一次构建,则安装依赖

$ ./build/install-build-deps.sh

配置编译环境

本repo包含两个branch,分别为master和cronet。master branch的代码可以分别编译出net等独立的共享库。cornet branch的代码则可以用于编译 chromium net android 平台的封装cronet。 要想编译cronet,则首先切换至cronet branch。然后编辑out/Default/args.gn文件,依据自己本地的环境,修改android_sdk_root指向自己本地Android SDK的安装目录;修改android_ndk_root指向自己本地的NDK目录(要求NDK版本为R10);可以根据需要配置target_cpu。

构建Cronet

$ gn gen out/Default/

$ ninja -C out/Default/ cronet

$ ninja -C out/Default/ cronet_java

导入二进制文件

像通常使用第三方Java库那样,将如下的jar文件导入Android工程:

out/Default/lib.java/base/base_java.jar

out/Default/lib.java/components/cronet/android/cronet_api.jar

out/Default/lib.java/components/cronet/android/cronet_java.jar

out/Default/lib.java/net/android/net_java.jar

out/Default/lib.java/url/url_java.jar

像通常使用第三方共享库文件那样,导入如下共享库文件:

out/Default/libcronet.so

在Android工程的Java代码中使用Chromium net库。

quic java_QUIC 协议网络库相关推荐

  1. 网易云音乐网络库跨平台化实践

    导读: 2021年10月21日,「QCon 全球软件开发大会」在上海举办,网易智企技术 VP 陈功作为出品人发起了「AI 时代下的融合通信技术」专场,邀请到网易云信.网易音视频实验室.网易云音乐的技术 ...

  2. 技术实践 | 聊聊网易云信的信令网络库实践

    导读:信令作为实时音视频技术架构中的重要一环,是对建立实时音视频通信起到关键桥梁性的作用. 文|丁永锋 网易云信资深客户端开发工程师 本文将从信令的概念着手,分享在网易云信新一代音视频技术架构下,信令 ...

  3. 淘宝移动网络库全解析

    本期不讲信令网络库设计模式,讲讲客户端静态资源下载网络库设计模式. 先定义一个类供业务方使用: DownloadNetwork{ StartTask();//全局调用 StopTask(); }; 资 ...

  4. 国产网络库libhv开源四周年回顾

    libhv是一个跨平台的c/c++网络库,本文写在libhv开源四周年之际,借机回顾了libhv的发展历程. github地址:https://github.com/ithewei/libhv 文章目 ...

  5. 新书预告:《Linux 多线程服务端编程——使用 muduo C++ 网络库》

    看完了 W. Richard Stevens 的传世经典<UNIX 网络编程>, 能照着例子用 Sockets API 编写 echo 服务, 却仍然对稍微复杂一点的网络编程任务感到无从下 ...

  6. 开源免费的C/C++网络库(c/c++ sockets library)

    (1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html (2)Asio Asio基于Boo ...

  7. 如何使用网络库实现应用级消息收发

    为什么80%的码农都做不了架构师?>>>    网络客户端ISocketClient和网络会话ISocketSession都继承了ISocketRemoteISocketRemote ...

  8. 客户端网络库实现真的很简单吗?

    (注:本文所讲的网络协议只针对TCP协议) 背景:开发一个C/S的应用势必需要服务端和客户端的适配,包括网络协议.数据传输格式.业务处理的适配.由于服务端承载着大量的客户端,需要高并发.高性能.高可靠 ...

  9. http协议网络编程

    一.http协议简介    在进入http协议网络编程之前,我们先来对HTTP协议进行简单的介绍. 早期的软件基本上都是运行在大型机上,软件的使用者则通过哑终端来控制使用计算机资源,在PC技术不断普及 ...

最新文章

  1. 您的连接不是私密连接
  2. Serverless在游戏、电商行业的一个运用场景示例
  3. 通过Cookie实现客户端与服务端会话的维持;
  4. 初步认识迭代服务器和并发服务器
  5. 基本控件Password控件
  6. 多线程笔试题(linux)
  7. jQuery分析(3) - jQuery.fn.init
  8. 为什么不能在scrollview中直接添加一个image,然后使animation.begin()??
  9. 《Java线程与并发编程实践》—— 2.6 小结
  10. 【转】三星8552 手机提示升级系统 完成后重启 开机画面一直停留在三星的LOGO 一闪一闪 怎么办...
  11. (宏)Word 仅修改选中图片的尺寸
  12. JavaAPI之Runtime类以及bat文件开启应用程序
  13. Linux三剑客正则表达式常用字符汇总
  14. JavaScript高级程序设计 第4版(中文高清)扫描版
  15. linux 7.4ip配置,新手进阶 Ubuntu7.10中配置IP地址
  16. 十天学会php之第八天
  17. PTA顺序表基本操作
  18. VS2010 保护视力 背景色设置
  19. RMAN delete noprompt obsolete参数研究
  20. pathon和c语言的区别

热门文章

  1. 彻底解决iPhone日历收到垃圾邀请问题
  2. 【Figma技巧】如何计算整个页面中的画板数量
  3. linux怎么验证tacacs认证,TACACS+认证服务器总结
  4. 记一次异常Caused by: java.lang.ClassNotFoundException: cn.exrick.xboot.core.entity.XXX
  5. Revit开发获取房间内的构件
  6. 扫描线算法讲解+例题
  7. 彻底禁用DeliveryOptimization
  8. Git 远程库操作详解
  9. 进度分享:ChatGPT搭建h5网页
  10. 明略科技大数据面试题