1//
2// Copyright (C) 2018 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16package {
17    default_applicable_licenses: ["Android-Apache-2.0"],
18    default_team: "trendy_team_system_experience",
19}
20
21genrule {
22    name: "statslog-carsystemui-java-gen",
23    tools: ["stats-log-api-gen"],
24    cmd: "$(location stats-log-api-gen) --java $(out) --module carsystemui" +
25        " --javaPackage com.android.systemui --javaClass CarSystemUIStatsLog",
26    out: ["com/android/systemui/car/CarSystemUIStatsLog.java"],
27}
28
29carsystemui_srcs = [
30    "src/**/*.java",
31    "src/**/*.kt",
32    "src/**/I*.aidl",
33    ":statslog-carsystemui-java-gen",
34]
35
36java_defaults {
37    name: "CarSystemUI-core-defaults",
38
39    srcs: carsystemui_srcs,
40
41    resource_dirs: [
42        "res-keyguard",
43        "res",
44    ],
45
46    static_libs: [
47        "SystemUI-core",
48        "CarNotificationLib",
49        "SystemUIPluginLib",
50        "SystemUISharedLib",
51        "SettingsLib",
52        "car-admin-ui-lib",
53        "car-helper-lib",
54        "car-telephony-common-no-overlayable",
55        "car-ui-lib-no-overlayable",
56        "car-qc-lib",
57        "car-resource-common",
58        "com_android_systemui_car_flags_lib",
59        "androidx.annotation_annotation",
60        "androidx.legacy_legacy-support-v4",
61        "androidx.recyclerview_recyclerview",
62        "androidx.preference_preference",
63        "androidx.appcompat_appcompat",
64        "androidx.mediarouter_mediarouter",
65        "androidx.palette_palette",
66        "androidx.legacy_legacy-preference-v14",
67        "androidx.leanback_leanback",
68        "androidx.slice_slice-core",
69        "androidx.slice_slice-view",
70        "androidx.slice_slice-builders",
71        "androidx.arch.core_core-runtime",
72        "androidx.lifecycle_lifecycle-common-java8",
73        "androidx.lifecycle_lifecycle-extensions",
74        "SystemUI-tags",
75        "SystemUI-proto",
76        "dagger2",
77        "//external/kotlinc:kotlin-annotations",
78        "//frameworks/libs/systemui:animationlib",
79        "CarDockLib",
80        "androidx.test.rules",
81        "car-data-subscription-lib",
82    ],
83
84    libs: [
85        "android.car",
86    ],
87
88    // TODO(b/319708040): re-enable use_resource_processor
89    use_resource_processor: false,
90}
91
92android_library {
93    name: "CarSystemUI-core",
94
95    defaults: [
96        "CarSystemUI-core-defaults",
97    ],
98
99    aaptflags: [
100        "--no-resource-deduping",
101    ],
102
103    javacflags: ["-Adagger.fastInit=enabled"],
104
105    manifest: "AndroidManifest.xml",
106
107    plugins: ["dagger2-compiler"],
108    // TODO(b/319708040): re-enable use_resource_processor
109    use_resource_processor: false,
110}
111
112android_app {
113    name: "CarSystemUI",
114
115    defaults: [
116        "wmshell_defaults",
117    ],
118
119    static_libs: [
120        "CarSystemUI-core",
121    ],
122
123    export_package_resources: true,
124
125    libs: [
126        "android.car",
127    ],
128
129    resource_dirs: [],
130
131    overrides: [
132        "SystemUI",
133    ],
134
135    platform_apis: true,
136    system_ext_specific: true,
137    certificate: "platform",
138    privileged: true,
139
140    optimize: {
141        proguard_flags_files: [
142            "proguard.flags",
143        ],
144    },
145    // TODO(b/301283770): Compiling CarSystemUI should not require -J-Xmx8192M
146    javacflags: [
147        "-J-Xmx8192M",
148    ],
149    dxflags: ["--multi-dex"],
150
151    aaptflags: [
152        "--extra-packages",
153        "com.android.keyguard",
154    ],
155
156    kotlincflags: ["-Xjvm-default=all"],
157
158    plugins: ["dagger2-compiler"],
159
160    required: [
161        "privapp_whitelist_com.android.systemui",
162        "allowed_privapp_com.android.carsystemui",
163    ],
164
165    // TODO(b/319708040): re-enable use_resource_processor
166    use_resource_processor: false,
167}
168
169// Begin daggervis
170
171// Dropped from google3/java/com/google/android/libraries/docs/inject/daggerplugin/dot
172java_import_host {
173    name: "car-systemui-binding-graph-plugin-jar",
174    jars: ["daggervis/libdagger_binding_graph_plugin_lib.jar"],
175}
176
177// A java SPI plugin to visualize dagger dependency graph.
178java_plugin {
179    name: "car-systemui-binding-graph-plugin",
180    static_libs: [
181        "car-systemui-binding-graph-plugin-jar",
182        "dagger2-compiler-lib",
183        "auto_service_annotations",
184        "auto_value_annotations",
185        "auto_value_memoized_extension_annotations",
186    ],
187    processor_class: "dagger.internal.codegen.ComponentProcessor",
188}
189
190android_library {
191    name: "CarSystemUI-core-daggervis",
192    defaults: [
193        "CarSystemUI-core-defaults",
194    ],
195    plugins: [
196        "car-systemui-binding-graph-plugin",
197        "dagger2-compiler",
198    ],
199}
200
201// End daggervis
202
203// Resource lib
204// To be used ONLY for RROs of CarSystemUI
205android_library {
206    name: "CarSystemUI-res",
207    sdk_version: "system_current",
208    resource_dirs: [
209        "res-keyguard",
210        "res",
211    ],
212    manifest: "AndroidManifest-res.xml",
213    use_resource_processor: true,
214    static_libs: [
215        "SystemUI-res",
216        "CarNotification-res",
217        "car-resource-common",
218        "car-ui-lib-no-overlayable",
219    ],
220    lint: {
221        disabled_checks: ["MissingClass"],
222    },
223}
224
225android_library {
226    name: "CarSystemUI-tests-base",
227    manifest: "tests/AndroidManifest-base.xml",
228    resource_dirs: [
229        "tests/res",
230    ],
231    static_libs: [
232        "CarSystemUI-res",
233        "SystemUI-tests-base",
234        "CarNotificationLib",
235        "android.car.test.utils",
236        "car-admin-ui-lib",
237        "car-helper-lib",
238        "car-telephony-common-no-overlayable",
239        "car-ui-lib-no-overlayable",
240        "car-qc-lib",
241        "car-resource-common",
242        "com_android_systemui_car_flags_lib",
243        "CarDockLib",
244        "car-data-subscription-lib",
245        "testng",
246        "//external/kotlinc:kotlin-annotations",
247    ],
248}
249
250android_library {
251    name: "CarSystemUI-tests",
252    manifest: "tests/AndroidManifest-base.xml",
253    additional_manifests: ["tests/AndroidManifest.xml"],
254    srcs: [
255        "tests/src/**/*.java",
256        "tests/src/**/*.kt",
257        ":CarSystemUI-tests-multivalent",
258        "src/**/*.java",
259        "src/**/*.kt",
260        "src/**/I*.aidl",
261        ":statslog-carsystemui-java-gen",
262    ],
263    static_libs: [
264        "SystemUI-tests",
265        "CarSystemUI-tests-base",
266    ],
267    libs: [
268        "android.test.runner.stubs.system",
269        "android.test.base.stubs.system",
270        "android.car",
271    ],
272
273    aaptflags: [
274        "--extra-packages",
275        "com.android.systemui",
276    ],
277
278    plugins: ["dagger2-compiler"],
279
280    lint: {
281        test: true,
282    },
283
284    // TODO(b/218518451) re-enable errorprone.
285    errorprone: {
286        enabled: false,
287    },
288    // TODO(b/319708040): re-enable use_resource_processor
289    use_resource_processor: false,
290}
291
292android_app {
293    name: "CarSystemUIRobo-stub",
294    defaults: [
295        "platform_app_defaults",
296        "SystemUI_optimized_defaults",
297        "wmshell_defaults",
298    ],
299    manifest: "tests/AndroidManifest-base.xml",
300
301    srcs: [
302        "src/**/*.java",
303        "src/**/*.kt",
304        "src/**/I*.aidl",
305    ],
306    static_libs: [
307        "//frameworks/libs/systemui:compilelib",
308        "CarSystemUI-tests-base",
309        "androidx.compose.runtime_runtime",
310        "CarSystemUI-core",
311    ],
312    libs: [
313        "keepanno-annotations",
314        "android.car",
315    ],
316    aaptflags: [
317        "--extra-packages",
318        "com.android.systemui",
319    ],
320    dont_merge_manifests: true,
321    platform_apis: true,
322    system_ext_specific: true,
323    certificate: "platform",
324    privileged: true,
325    kotlincflags: ["-Xjvm-default=all"],
326    optimize: {
327        shrink_resources: false,
328        optimized_shrink_resources: false,
329        proguard_flags_files: ["proguard.flags"],
330    },
331
332    plugins: ["dagger2-compiler"],
333
334    // TODO(b/319708040): re-enable use_resource_processor
335    use_resource_processor: false,
336}
337
338android_robolectric_test {
339    name: "CarSystemUIRoboTests",
340    srcs: [
341        ":SystemUI-robotest-utils",
342        ":SystemUI-tests-utils",
343        ":CarSystemUI-tests-multivalent",
344    ],
345    static_libs: [
346        "RoboTestLibraries",
347    ],
348    libs: [
349        "android.car",
350        "android.test.runner.stubs.system",
351        "android.test.base.stubs.system",
352        "android.test.mock.stubs.system",
353        "truth",
354    ],
355
356    upstream: true,
357
358    instrumentation_for: "CarSystemUIRobo-stub",
359    java_resource_dirs: ["tests/robolectric/config"],
360    plugins: [
361        "dagger2-compiler",
362    ],
363    strict_mode: false,
364}
365
366android_ravenwood_test {
367    name: "CarSystemUIRavenTests",
368    srcs: [
369        ":SystemUI-tests-utils",
370        ":CarSystemUI-tests-multivalent",
371        ":CarSystemUIRobo-stub{.aapt.srcjar}",
372    ],
373    static_libs: [
374        "CarSystemUI-core",
375        "CarSystemUI-res",
376        "CarSystemUI-tests-base",
377        "androidx.test.uiautomator_uiautomator",
378        "androidx.core_core-animation-testing",
379        "androidx.test.ext.junit",
380        "kosmos",
381        "mockito-kotlin-nodeps",
382    ],
383    libs: [
384        "android.car",
385        "android.test.runner.stubs.system",
386        "android.test.base.stubs.system",
387        "android.test.mock.stubs.system",
388    ],
389    auto_gen_config: true,
390    plugins: [
391        "dagger2-compiler",
392    ],
393}
394
395filegroup {
396    name: "CarSystemUI-tests-multivalent",
397    srcs: [
398        "multivalentTests/src/**/*.kt",
399        "multivalentTests/src/**/*.java",
400    ],
401}
402