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-master` and/or `aosp-master-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-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-master-build <build id> --aosp-master-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.
