Cronet build instructions

Checking out the code

Follow all the Get the Code instructions for your target platform up to and including running hooks.

Building Cronet for development and debugging

To build Cronet for development and debugging purposes:

First, gn is used to create ninja files targeting the intended platform, then ninja executes the ninja files to run the build.

Android / iOS builds

$ ./components/cronet/tools/cr_cronet.py gn --out_dir=out/Cronet

If the build host is Linux, Android binaries will be built. If the build host is macOS, iOS binaries will be built.

Note: these commands clobber output of previously executed gn commands in out/Cronet. If --out_dir is left out, the output directory defaults to out/Debug for debug builds and out/Release for release builds (see below).

If --x86 option is specified, then a native library is built for Intel x86 architecture, and the output directory defaults to out/Debug-x86 if unspecified. This can be useful for running on mobile emulators.

Desktop builds (targets the current OS)

TODO(caraitto): Specify how to target Chrome OS and Fuchsia.

gn gen out/Cronet

Running the ninja files

Now, use the generated ninja files to execute the build against the cronet_package build target:

$ ninja -C out/Cronet cronet_package

Building Cronet mobile for releases

To build Cronet with optimizations and with debug information stripped out:

$ ./components/cronet/tools/cr_cronet.py gn --release
$ ninja -C out/Release cronet_package

Note: these commands clobber output of previously executed gn commands in out/Release.

Building for other architectures

By default ARMv7 32-bit executables are generated. To generate executables targeting other architectures modify cr_cronet.py's gn_args variable to include:

  • For ARMv8 64-bit: target_cpu="arm64"
  • For x86 32-bit: target_cpu="x86"
  • For x86 64-bit: target_cpu="x64"

Alternatively you can run gn args {out_dir} and modify arguments in the editor that comes up. This has advantage of not changing cr_cronet.py.