| # Build Android Platform on Remote Build Execution |
| |
| Soong is integrated with Google's Remote Build Execution(RBE) service, which |
| implements the |
| [Remote Executaion API](https://github.com/bazelbuild/remote-apis). |
| |
| With RBE enabled, it can speed up the Android Platform builds by distributing |
| build actions through a worker pool sharing a central cache of build results. |
| |
| ## Configuration |
| |
| To enable RBE, you need to set several environment variables before triggering |
| the build. You can set them through a |
| [environment variables config file](https://android.googlesource.com/platform/build/soong/+/main/README.md#environment-variables-config-file). |
| As an example, [build/soong/docs/rbe.json](rbe.json) is a config that enables |
| RBE in the build. Once the config file is created, you need to let Soong load |
| the config file by specifying `ANDROID_BUILD_ENVIRONMENT_CONFIG_DIR` environment |
| variable and `ANDROID_BUILD_ENVIRONMENT_CONFIG` environment variable. The |
| following command starts Soong with [build/soong/docs/rbe.json](rbe.json) |
| loaded: |
| |
| ```shell |
| ANDROID_BUILD_ENVIRONMENT_CONFIG=rbe \ |
| ANDROID_BUILD_ENVIRONMENT_CONFIG_DIR=build/soong/doc \ |
| build/soong/soong_ui.bash |
| ``` |
| |
| ### Configuration Explanation |
| |
| Below a brief explanation of each field in |
| [build/soong/docs/rbe.json](rbe.json): |
| |
| ##### USE\_RBE: |
| If set to 1, enable RBE for the build. |
| |
| ##### RBE\_CXX\_EXEC\_STRATEGY / RBE\_JAVAC\_EXEC\_STRATEGY / RBE\_R8\_EXEC\_STRATEGY / RBE\_D8\_EXEC\_STRATEGY: |
| |
| Sets strategies for C++/javac/r8/d8 action types. Available options are |
| (**Note**: all options will update the remote cache if the right permissions to |
| update cache are given to the user.): |
| |
| * **local**: Only execute locally. |
| * **remote**: Only execute remotely. |
| * **remote_local_fallback**: Try executing remotely and fall back to local |
| execution if failed. |
| * **racing**: Race remote execution and local execution and use the earlier |
| result. |
| |
| ##### RBE\_JAVAC / RBE\_R8 / RBE\_D8 |
| |
| If set to 1, enable javac/r8/d8 support. C++ compilation is enabled by default. |
| |
| ##### RBE\_service / RBE\_instance |
| |
| The remote execution service endpoint and instance ID to target when calling |
| remote execution via gRPC to execute actions. |
| |
| ##### RBE\_DIR |
| |
| Where to find remote client binaries (rewrapper, reproxy) |
| |
| ##### RBE\_use\_application\_default\_credentials |
| |
| reclient uses |
| [application default credentials](https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login) |
| for autentication, as generated by `gcloud auth application-default login` |
| |
| ##### RBE\_log\_dir/RBE\_proxy\_log\_dir/RBE\_output\_dir |
| |
| Logs generated by rewrapper and reproxy will go here. |