Skip to content

sleeyax/cronet-binaries

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cronet-binaries build workflow

⚠️ This project is still under construction. Changes may be force pushed so use at your own risk.

Pre-built, cross-platform binaries for cronet (Chromium's networking stack). New cronet binaries will be published to releases as soon as new stable versions of Chromium are released.

This repository is based on NaiveProxy's excellent build system, but doesn't include any Naive binaries, tests or go files. The last release of Naive that came with standalone cronet binaries was v106.0.5249.91-3 (Nov 2, 2022). Since then, new builds have been discontinued so this project aims to fill that gap.

Applied patches

Patches are applied to the Chromium source code to make it compile on all supported platforms and support additional features. The following noteworthy patches are applied:

  • Minimize source code and build size
  • Disable exceptions and RTTI, except on Mac and Android.
  • Support OpenWrt builds
  • Use the builtin verifier instead of the system verifier (drop dependency of NSS on Linux) and read the system trust store (following Go's behavior in crypto/x509/root_unix.go and crypto/x509/root_linux.go):
  • Handle AIA response in PKCS#7 format
  • Allow higher socket limits for proxies
  • Force tunneling for all sockets
  • Support HTTP/2 and HTTP/3 CONNECT tunnel Fast Open using the fastopen header
  • Pad RST_STREAM frames
  • Disable Android JNI
  • Use fixed proxy resolution from experimental option proxy_server

Generally, we try to apply changes from Naive that are still relevant and don't break the build. If you have any suggestions, please open an issue.

Related projects

Developers

Local development

To build cronet locally using docker, you can use a combination of act and act-cache-server.

$ act --env ACTIONS_CACHE_URL=http://localhost:<PORT>/ --env ACTIONS_RUNTIME_URL=http://localhost:<PORT>/ --env ACTIONS_RUNTIME_TOKEN=<TOKEN> --job linux

Replace <PORT> and <TOKEN> with the port and token you configured for your local act-cache-server instance. Using a cache server is optional, but will speed up the build process significantly.