| # Description of the legacy desugared library configuration file |
| |
| ## Version |
| |
| The first field `configuration_format_version` encodes a versioning number internal to R8/D8 |
| in the form of an unsigned integer. It allows R8/D8 to know if the file given is supported. |
| Non-backward compatible changes to the desugared library increase the version number, and such |
| library cannot be compiled without upgrading R8/D8 to the latest version. |
| |
| The fields `group_id` and `artifact_id` are maven-coordinated ids for the desugared library |
| configuration file. |
| |
| The field `version` holds the version of the content for the configuration. This number |
| must be updated each time the configuration is changed. |
| |
| A unique identifier is generated for the desugared library configuration using |
| `group_id:artifact_id:version`. |
| |
| ## Required compilation API level |
| |
| The field `required_compilation_api_level` encodes the minimal Android API level required for |
| the desugared library to be compiled correctly. If the API of library used for compilation of the |
| library or a program using the library is lower than this level, one has to upgrade the SDK version |
| used to be able to use desugared libraries. |
| |
| ## Library and program flags |
| |
| The fields `library_flags` and `program_flags` include the set of flags required for respectively |
| the library and the program using the desugared library compilation. The sets of flags are |
| different depending on the min API level used. The flags are in a list, where each list entry |
| specifies up to which min API level the set of flags should be applied. During compilation, |
| R8/D8 adds up all the required flags for the min API level specified at compilation. |
| |
| For example, let's say the `program_flags` have entries for `api_level_below_or_equal` 20, 24 and |
| 26. If compiling the program for min API 24, R8/D8 will use both the set of flags for API 24 and |
| 26 (24 <= 24, 24 <= 26 but !(24 <= 20)). |
| |
| ## Extra keep rules |
| |
| The last field is `extra_keep_rules`, it includes keep rules that are appended by L8 when shrinking |
| the desugared library. It includes keep rules related to reflection inside the desugared library, |
| related to enum to have EnumSet working and to keep the j$ prefix. |
| |
| ## Copyright |
| |
| Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file |
| for details. All rights reserved. Use of this source code is governed by a |
| BSD-style license that can be found in the LICENSE file. |