README.dex_preopt_check.md
1# `dex_preopt_check`
2
3`dex_preopt_check` is a build-time check to make sure that all system server
4jars are dexpreopted. When the check fails, you will see the following error
5message:
6
7```
8FAILED:
9build/make/core/tasks/dex_preopt_check.mk:13: warning: Missing compilation artifacts. Dexpreopting is not working for some system server jars
10Offending entries:
11```
12
13Possible causes are:
14
151. There is an APEX/SDK mismatch. (E.g., the APEX is built from source while
16 the SDK is built from prebuilt.)
17
181. The `systemserverclasspath_fragment` is not added as
19 `systemserverclasspath_fragments` of the corresponding `apex` module, or not
20 added as `exported_systemserverclasspath_fragments` of the corresponding
21 `prebuilt_apex`/`apex_set` module when building from prebuilt.
22
231. The expected version of the system server java library is not preferred.
24 (E.g., the `java_import` module has `prefer: false` when building from
25 prebuilt.)
26
271. Dexpreopting is disabled for the system server java library. This can be due
28 to various reasons including but not limited to:
29
30 - The java library has `dex_preopt: { enabled: false }` in the Android.bp
31 file.
32
33 - The java library is listed in `DEXPREOPT_DISABLED_MODULES` in a Makefile.
34
35 - The java library is missing `installable: true` in the Android.bp
36 file when building from source.
37
38 - Sanitizer is enabled.
39
401. `PRODUCT_SYSTEM_SERVER_JARS`, `PRODUCT_APEX_SYSTEM_SERVER_JARS`,
41 `PRODUCT_STANDALONE_SYSTEM_SERVER_JARS`, or
42 `PRODUCT_APEX_STANDALONE_SYSTEM_SERVER_JARS` has an extra entry that is not
43 needed by the product.
44