Build Environment Setup

These instructions will allow you to initialize an Android Rust toolchain build environment. You only need to execute these instructions when you want to check out a new copy of the project source repository.

Download Source

The Rust toolchain has two branch manifests in Android, main-rust-toolchain and main-plus-rust. We will be using the main-plus-rust branch in this documentation for two reasons:

  1. testing the prebuilts to ensure they can build Android and
  2. generating profiles for Profile Guided Optimization.

The following commands will create a repo directory (e.g. ~/main-plus-rust), initialize it with the main-plus-rust manifest, synchronize the repository, and tell Git how to find the list of commit revisions to skip when computing blame.

$ mkdir main-plus-rust
$ cd main-plus-rust
$ REPO_ALLOW_SHALLOW=0 repo init -c -u sso://googleplex-android/platform/manifest -b main-plus-rust --use-superproject --partial-clone --partial-clone-exclude=platform/frameworks/base --clone-filter=blob:limit=10M
$ repo sync -j16
$ git config blame.ignoreRevsFile .git-blame-ignore-revs

Configuring Tooling

To allow editors like VSCode and other tools to find the project's Python code you can add the line below to the toolchains/android_rust/.env file:

PYTHONPATH=$PYTHONPATH:src/

The Android Rust toolchain uses the MyPy and YAPF tools to handle linting and autoformatting respectively. You can install these by running

sudo apt install mypy yapf

Finally, there are multiple ways to handle pre-commit hooks for the Android Rust toolchain directory. One option is to place the following script at toolchains/android_rust/.git/hooks/precommit:

#!/usr/bin/sh

yapf -i tools/*.py src/android_rust/*.py src/binary_crates/*.py
mypy .