• Home
Name Date Size #Lines LOC

..--

apex/03-May-2024-1,9681,540

boot/03-May-2024-26,74526,732

sdk/03-May-2024-269230

Android.bpD03-May-202413.1 KiB427389

Android.common.mkD03-May-20243.3 KiB10167

Android.common_build.mkD03-May-20242.3 KiB8445

Android.common_path.mkD03-May-20247.1 KiB15491

Android.common_test.mkD03-May-20245.1 KiB10956

Android.cpplint.mkD03-May-20242.9 KiB7631

Android.gtest.mkD03-May-202421.3 KiB532374

README.mdD03-May-20244.2 KiB13489

SoongConfig.bpD03-May-20242.3 KiB8776

art.goD03-May-202414.4 KiB492361

build-art-module.shD03-May-20243.7 KiB13085

codegen.goD03-May-20246.1 KiB236187

makevars.goD03-May-20242.4 KiB7949

README.md

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.
35
362.  Set up the development environment:
37
38    ```
39    banchan com.android.art <arch>
40    export SOONG_ALLOW_MISSING_DEPENDENCIES=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
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
62    ```
63
644.  Install the module and reboot:
65
66    ```
67    adb install out/target/product/generic_<arch>/system/apex/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 SOONG_CONFIG_art_module_source_build=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## Updating prebuilts
99
100Prebuilts are used for the ART Module dependencies that have sources outside the
101`master-art` manifest. Conversely the ART Module is (normally) a prebuilt when
102used in platform 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.
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
118To update the ART Module prebuilts in the two last locations:
119
1201.  Ensure the changes that need to go into the prebuilt are submitted.
121
1222.  Wait for a new build on branch `aosp-master-art`, target `aosp_art_module`.
123
1243.  In a full platform tree, run:
125
126    ```
127    packages/modules/ArtPrebuilt/update-art-module-prebuilts.py \
128      --build <build id> --upload
129    ```
130
131    This will download the prebuilts from the given `<build id>` (an integer
132    number), create a CL topic, and upload it to Gerrit. Get it reviewed and
133    submit. Please do not make any file changes locally.
134