1# Building the ART Module 2 3ART is built as a module in the form of an APEX package, `com.android.art.apex`. 4That package can be installed with `adb install` on a device running Android S 5or later. It is also included in the system partition (in the `system/apex` 6directory) of platform releases, to ensure it is always available. 7 8The recommended way to build the ART Module is to use the `master-art` manifest, 9which only has the sources and dependencies required for the module. 10 11Currently it is also possible to build ART directly from sources in a platform 12build, i.e. as has been the traditional way up until Android S. However that 13method is being phased out. 14 15The ART Module is available as a debug variant, `com.android.art.debug.apex`, 16which has extra internal consistency checks enabled, and some debug tools. A 17device cannot have both the non-debug and debug variants installed at once - it 18may not boot then. 19 20`com.google.android.art.apex` (note `.google.`) is the Google signed variant of 21the module. It is also mutually exclusive with the other ones. 22 23 24## Building as a module on `master-art` 25 261. Check out the `master-art` tree: 27 28 ``` 29 repo init -b master-art -u <repository url> 30 ``` 31 32 See the [Android source access 33 instructions](https://source.android.com/setup/build/downloading) for 34 further details. Google internal users please see [go/sync](http://go/sync). 35 362. Set up the development environment: 37 38 ``` 39 banchan com.android.art <arch> 40 export SOONG_ALLOW_MISSING_DEPENDENCIES=true BUILD_BROKEN_DISABLE_BAZEL=true 41 ``` 42 43 For Google internal builds on the internal master-art branch, specify 44 instead the Google variant of the module and product: 45 46 ``` 47 banchan com.google.android.art mainline_modules_<arch> 48 export SOONG_ALLOW_MISSING_DEPENDENCIES=true BUILD_BROKEN_DISABLE_BAZEL=true 49 ``` 50 51 `<arch>` is the device architecture, one of `arm`, `arm64`, `x86`, or 52 `x86_64`. Regardless of the device architecture, the build also includes the 53 usual host architectures, and 64/32-bit multilib for the 64-bit products. 54 55 To build the debug variant of the module, specify `com.android.art.debug` 56 instead of `com.android.art`. It is also possible to list both. 57 583. Build the module: 59 60 ``` 61 m apps_only dist 62 ``` 63 644. Install the module and reboot: 65 66 ``` 67 adb install out/dist/com.android.art.apex 68 adb reboot 69 ``` 70 71 The name of the APEX file depends on what you passed to `banchan`. 72 73 74## Building as part of the base system image 75 76NOTE: This method of building is slated to be obsoleted in favor of the 77module build on `master-art` above (b/172480617). 78 791. Check out a full Android platform tree and lunch the appropriate product the 80 normal way. 81 822. Ensure the ART Module is built from source: 83 84 ``` 85 export ART_MODULE_BUILD_FROM_SOURCE=true 86 ``` 87 88 If this isn't set then the build may use prebuilts of the ART Module that 89 may be older than the sources. 90 913. Build the system image the normal way, for example: 92 93 ``` 94 m droid 95 ``` 96 97 98## Prebuilts 99 100Prebuilts are used for the ART Module dependencies that have sources outside the 101`master-art` manifest. Conversely the ART Module may be a prebuilt when used in 102platform builds of the base system image. 103 104The locations of the prebuilts are: 105 106* `prebuilts/runtime/mainline` for prebuilts and SDKs required to build the ART 107 Module. 108 109 See 110 [prebuilts/runtime/mainline/README.md](https://android.googlesource.com/platform/prebuilts/runtime/+/master/mainline/README.md) 111 for instructions on how to update them. 112 113* `packages/modules/ArtPrebuilt` for the ART Module APEX packages, if present. 114 115* `prebuilts/module_sdk/art` for the ART Module SDK and other tools, needed to 116 build platform images and other modules that depend on the ART Module. 117