blob: ab8e12bfb9be949a574bf2e5ed7fdc7ee21864f3 [file] [log] [blame]
Roland Levillain38a938e2018-09-21 10:55:51 +01001// Android Runtime APEX module.
2
3// Modules listed in LOCAL_REQUIRED_MODULES for module art-runtime in art/Android.mk.
4// - Base requirements (binaries for which both 32- and 64-bit versions are built, if relevant).
5art_runtime_base_binaries_both = [
6 "dalvikvm",
7]
8// - Base requirements (binaries for which a 32-bit version is preferred).
9art_runtime_base_binaries_prefer32 = [
10 "dex2oat",
11 "dexoptanalyzer",
12 "profman",
13]
14// - Base requirements (libraries).
15art_runtime_base_native_shared_libs = [
16 "libart",
17 "libart-compiler",
18 "libopenjdkjvm",
19 "libopenjdkjvmti",
20 "libadbconnection",
21]
22// - Fake library that avoids namespace issues and gives some warnings for nosy apps.
23art_runtime_fake_native_shared_libs = [
24 // FIXME: Does not work as-is, because `libart_fake` is defined in libart_fake/Android.mk,
25 // and because a module defined in a Blueprint file cannot depend on a module defined in a
26 // Makefile. To support `libart_fake` as a dependency of this APEX module, we can either
27 // (probably in that order of preference):
28 // a. translate that logic into Blueprint; or
29 // b. write the whole Android Runtime APEX generation logic in Android.mk; or
30 // c. introduce an `art_apex` module type extending the `apex` module type and write the
31 // corresponding Go logic to handle this extra dependency.
32 //"libart_fake",
33]
34// - Debug variants (binaries for which a 32-bit version is preferred).
35// FIXME: These modules are optional (the built product can decide to include them or not).
36// Should they be moved to another APEX file?
37art_runtime_debug_binaries_prefer32 = [
38 "dex2oatd",
39 "dexoptanalyzerd",
40 "profmand",
41]
42art_runtime_debug_native_shared_libs = [
43 "libartd",
44 "libartd-compiler",
45 "libopenjdkd",
46 "libopenjdkjvmd",
47 "libopenjdkjvmtid",
48 "libadbconnectiond",
49]
50
51// Modules listed in LOCAL_REQUIRED_MODULES for module art-tools in art/Android.mk.
Alex Light36703dc2018-11-29 17:15:02 -080052art_tools_common_binaries = [
Roland Levillain38a938e2018-09-21 10:55:51 +010053 "dexdiag",
54 "dexdump",
55 "dexlist",
Alex Light36703dc2018-11-29 17:15:02 -080056]
57
58art_tools_device_binaries = [
Roland Levillain38a938e2018-09-21 10:55:51 +010059 "oatdump",
60]
61
62// Host-only modules listed in LOCAL_REQUIRED_MODULES for module art-tools in art/Android.mk.
63// TODO: Include these modules in the future "host APEX".
64art_tools_host_binaries = [
65 // FIXME: Does not work as-is, because `ahat` is defined in tools/ahat/Android.mk
66 // (same issue as for `libart_fake` above).
67 //"ahat",
68 "hprof-conv",
69 // ...
70]
71
Alex Light36703dc2018-11-29 17:15:02 -080072art_tools_binaries = art_tools_common_binaries + art_tools_device_binaries
73
Roland Levillain38a938e2018-09-21 10:55:51 +010074apex_key {
75 name: "com.android.runtime.key",
Jiyong Park11a2df32018-11-22 16:25:08 +090076 public_key: "com.android.runtime.avbpubkey",
77 private_key: "com.android.runtime.pem",
Roland Levillain38a938e2018-09-21 10:55:51 +010078}
79
Roland Levillain53058802018-11-14 17:32:18 +000080// TODO: Introduce `apex_defaults` to factor common parts of `apex`
81// module definitions below?
82
83// Release version of the Runtime APEX module (not containing debug
84// variants nor tools), included in user builds. Also used for
85// storage-constrained devices in userdebug and eng builds.
Roland Levillain38a938e2018-09-21 10:55:51 +010086apex {
Roland Levillain53058802018-11-14 17:32:18 +000087 name: "com.android.runtime.release",
88 compile_multilib: "both",
89 manifest: "manifest.json",
90 native_shared_libs: art_runtime_base_native_shared_libs
91 + art_runtime_fake_native_shared_libs,
92 multilib: {
93 both: {
94 // TODO: Add logic to create a `dalvikvm` symlink to `dalvikvm32` or `dalvikvm64`
95 // (see `symlink_preferred_arch` in art/dalvikvm/Android.bp).
96 binaries: art_runtime_base_binaries_both,
97 },
98 prefer32: {
99 binaries: art_runtime_base_binaries_prefer32,
100 },
101 first: {
102 binaries: [],
103 }
104 },
105 key: "com.android.runtime.key",
106 // TODO: Also package a `ld.config.txt` config file (to be placed in `etc/`).
107 // ...
108}
109
110// "Debug" version of the Runtime APEX module (containing both release and
111// debug variants, as well as additional tools), included in userdebug and
112// eng build.
113apex {
114 name: "com.android.runtime.debug",
Roland Levillain38a938e2018-09-21 10:55:51 +0100115 compile_multilib: "both",
116 manifest: "manifest.json",
Roland Levillain38a938e2018-09-21 10:55:51 +0100117 native_shared_libs: art_runtime_base_native_shared_libs
118 + art_runtime_fake_native_shared_libs
119 + art_runtime_debug_native_shared_libs,
120 multilib: {
121 both: {
122 // TODO: Add logic to create a `dalvikvm` symlink to `dalvikvm32` or `dalvikvm64`
123 // (see `symlink_preferred_arch` in art/dalvikvm/Android.bp).
124 binaries: art_runtime_base_binaries_both,
125 },
126 prefer32: {
127 binaries: art_runtime_base_binaries_prefer32
Roland Levillain53058802018-11-14 17:32:18 +0000128 + art_runtime_debug_binaries_prefer32,
Roland Levillain38a938e2018-09-21 10:55:51 +0100129 },
130 first: {
131 binaries: art_tools_binaries,
132 }
133 },
134 key: "com.android.runtime.key",
135 // TODO: Also package a `ld.config.txt` config file (to be placed in `etc/`).
136 // ...
137}
Alex Light36703dc2018-11-29 17:15:02 -0800138
139apex {
140 name: "com.android.runtime.host",
141 compile_multilib: "both",
142 payload_type: "zip",
143 // TODO: We need this and the multilib is different from above b/c ART sets
144 // different prefer32 on host and device. We should change this.
145 host_supported: true,
146 device_supported: false,
147 // The files are the same on both.
148 manifest: "manifest.json",
149 native_shared_libs: art_runtime_base_native_shared_libs
150 + art_runtime_fake_native_shared_libs
151 + art_runtime_debug_native_shared_libs,
152 multilib: {
153 both: {
154 // TODO: Add logic to create a `dalvikvm` symlink to `dalvikvm32` or `dalvikvm64`
155 // (see `symlink_preferred_arch` in art/dalvikvm/Android.bp).
156 binaries: art_runtime_base_binaries_both,
157 },
158 first: {
159 // TODO: oatdump cannot link with host linux_bionic due to not using clang ld
160 binaries: art_tools_common_binaries
161 + art_runtime_base_binaries_prefer32
162 + art_runtime_debug_binaries_prefer32,
163 }
164 },
165 key: "com.android.runtime.key",
166}