Prebuilts of APIs from platform and other Mainline modules that the ART Module
needs.

These prebuilts should reflect the APIs in Android 12 (version 31), which is the
earliest release that may take an update of the ART Module. Hence updating the
prebuilts to newer versions needs to be done with care. Prebuilts that are part
of the NDK are generally safe since they are annotated to provide a version 31
compatible ABI.

To update:

1. Submit the changes that need to go into the prebuilts.

2. Wait for new builds on branches `aosp-main` and/or `aosp-main-throttled`,
   depending on which prebuilts are required. See `update.py` for details about
   which branches and targets are used for what.

   In general `mainline_modules_sdks-trunk_staging-userdebug` is the slowest
   build to complete, so look for that to be on the safe side.

3. Edit the list returned by `install_entries` in `update.py` in this directory
   to only cover the updates you need (this change shouldn't be submitted).

4. Run:

   ```
   prebuilts/runtime/mainline/update.py \
     --aosp-main-build <build id> --aosp-main-throttled-build <build id>
   ```

   where the two `<build id>` are the builds from step #2.

   The script will download, extract and put the right prebuilts in the right
   places in `prebuilts/runtime`, `prebuilts/module_sdk/conscrypt`, and/or
   `prebuilts/module_sdk/StatsD`. However, some prebuilts may not have
   corresponding CI builds so they may not be complete - see `update.py` for
   details.

5. Try to further minimize the updates in the created CLs and ensure they are
   safe. This usually means reverting some prebuilts back to their old contents,
   and reverting specific hunks in the `Android.bp` files. Also, please improve
   the autogenerated CL descriptions to make them more accurate and describe the
   reason for the update. Please avoid doing any other changes - in particular
   there must be no local change in any prebuilt file (not counting
   `Android.bp`'s). mast@google.com is happy to help with reviews.

Note that the script takes a `--local-dist` argument that you can use to test
with prebuilts from a local build in another tree. However, CLs created that way
should not be submitted.
