android13/packages/modules/Bluetooth/system/gd/rust/README.md

1.2 KiB

Rust build

Currently, the Rust components are built differently on Android vs Linux. We are missing Rust support in our GN toolchain so we currently build the Rust libraries as a staticlib and link in C++. This may change in the future once we have better support.

For now, you can build all of the Rust code using Cargo.

There are some dependencies:

  • You must have the protobuf-compiler package installed
  • You must have a recent version of Cargo + Rust

You should use build.py at the root to do your Rust builds so that it correctly points your dependencies towards the vendored crates and sets your $CARGO_HOME to the correct location.

Building packets package

This package depends on bluetooth_packetgen and thus simply using cargo build will fail. Follow the steps below to ensure the dependency is found in $CARGO_HOME/bin.

  1. Run m -j32 bluetooth_packetgen to compile bluetooth_packetgen c++ binary.
  2. Change directory to $CARGO_HOME/bin.
  3. Create a symlink in $CARGO_HOME/bin to compiled bluetooth_packetgen. ln -s ~/aosp/out/host/linux-x86/bin/bluetooth_packetgen bluetooth_packetgen

Enable GD Rust

  1. adb shell device_config put bluetooth INIT_gd_rust true
  2. Restart the device