1# ICU on Ravenwood 2 3# What APIs are enabled 4As of 2024-06-19, Ravenwood uses the host side JVM, not ART, so it doesn't use `libcore` either. 5 6To support ICU on Ravenwood, we include the following jar files in the 7Ravenwood classpath. 8- `core-icu4j-for-host.ravenwood` 9- `icu4j-icudata-jarjar` 10- `icu4j-icutzdata-jarjar` 11 12`core-icu4j-for-host.ravenwood` is made from `core-icu4j-for-host.ravenwood` 13with `hoststubgen` to make the following modifications. 14- Enable `android.icu` APIs on Ravenwood. 15- But all other APIs -- i.e. all `libcore_bridge` APIS -- will throw at runtime. 16 17This "policy" is defined in android_icu4j/icu-ravenwood-policies.txt. 18 19As a result, on Ravenwood, all `android.icu` APIs will work, but none of the `libcore_bridge` APIs. 20 21# CTS 22 23ICU's CTS is `CtsIcuTestCases`, which contains the tests under 24android_icu4j/src/main/tests/, which are the tests from the upstream ICU, and 25android_icu4j/testing/, which are android specific tests, which depends 26on `libcore_bridge`. 27 28On Ravenwood, android_icu4j/src/main/tests/ will pass, but not android_icu4j/testing/. 29 30So we have `CtsIcuTestCasesRavenwood-core-only`, which only contains the 31tests from the upstream. You can run this with `atest CtsIcuTestCasesRavenwood-core-only`. 32