1// Copyright (C) 2018 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package {
16    default_team: "trendy_team_aaos_framework",
17    default_applicable_licenses: ["Android-Apache-2.0"],
18}
19
20filegroup {
21    name: "android.car.cluster.navigation-src",
22    srcs: ["src/android/car/navigation/navigation_state.proto"],
23    visibility: [
24        "//packages/services/Car/car-lib",
25        "//packages/services/Car/service",
26    ],
27}
28
29// Public protos for CarTelemetryManager clients.
30filegroup {
31    name: "cartelemetryservice-proto-srcs",
32    srcs: [
33        "src/android/car/telemetry/telemetry.proto",
34    ],
35}
36
37java_library {
38    name: "android.car.cluster.navigation",
39    proto: {
40        type: "lite",
41    },
42    sdk_version: "module_current",
43    min_sdk_version: "31",
44    apex_available: [
45        "//apex_available:platform",
46        "com.android.car.framework",
47    ],
48    static_libs: ["libprotobuf-java-lite"],
49    srcs: ["src/android/car/navigation/navigation_state.proto"],
50}
51
52filegroup {
53    name: "android.car-full-src",
54    srcs: [
55        "src/**/*.java",
56        "src/**/*.aidl",
57    ],
58    visibility: [
59        "//packages/services/Car/car-lib",
60        "//packages/services/Car/car-lib-module",
61        "//packages/services/Car/tests/CarLibUnitTest:__subpackages__",
62    ],
63}
64
65java_defaults {
66    name: "android.car-defaults",
67    defaults: [
68        "car-framework-aconfig-libraries",
69    ],
70    srcs: [
71        ":android.car-full-src",
72    ],
73    aidl: {
74        include_dirs: [
75            "packages/modules/Bluetooth/framework/aidl-export",
76        ],
77    },
78    libs: [
79        "android.car.builtin.stubs.module_lib",
80        "framework-annotations-lib",
81        "framework-wifi.stubs.module_lib",
82        "framework-bluetooth.stubs.module_lib",
83        "framework-location.stubs.module_lib",
84        "modules-utils-preconditions",
85    ],
86    installable: true,
87    // TODO(b/288271411): enable it when car mainline module is supported
88    // min_sdk_version: "33",
89    sdk_version: "module_current",
90    dist: {
91        targets: ["dist_files"],
92    },
93}
94
95java_library {
96    name: "android.car",
97    defaults: [
98        "android.car-defaults",
99    ],
100    static_libs: [
101        "com.android.car.internal.dep",
102    ],
103    lint: {
104        baseline_filename: "lint-baseline.xml",
105    },
106}
107
108// TODO(b/248635421): these annotations are part of android.car, but
109// they're still need on ATS
110java_library_static {
111    name: "android.car.annotations.compile-only",
112    srcs: [
113        "src/android/car/annotation/*",
114        "src/android/car/ApiVersion.java",
115        "src/android/car/CarVersion.java",
116        "src/android/car/PlatformVersion.java",
117    ],
118}
119
120stubs_defaults {
121    name: "android.car-docs-default",
122    srcs: [
123        "src/**/*.java",
124    ],
125    libs: [
126        "android.car",
127    ],
128}
129
130droidstubs {
131    name: "android.car-stubs-docs",
132    defaults: ["android.car-docs-default"],
133    flags: [
134        "--hide UnavailableSymbol",
135        "--hide HiddenSuperclass",
136        "--stub-packages android.car*",
137        "--error UnflaggedApi",
138    ],
139    installable: false,
140    check_api: {
141        last_released: {
142            api_file: ":android.car.api.combined.public.latest",
143            removed_api_file: ":android.car-removed.api.combined.public.latest",
144        },
145        current: {
146            api_file: "api/current.txt",
147            removed_api_file: "api/removed.txt",
148        },
149        api_lint: {
150            enabled: true,
151            new_since: ":android.car.api.combined.public.latest",
152            baseline_file: "api/lint-baseline.txt",
153        },
154    },
155}
156
157droidstubs {
158    name: "android.car-system-stubs-docs",
159    defaults: ["android.car-docs-default"],
160    // TODO(b/174572385): Remove CallbackInterface once this b/174572385 is fixed
161    flags: [
162        "--hide CallbackInterface",
163        "--hide UnavailableSymbol",
164        "--hide HiddenSuperclass",
165        "--stub-packages android.car*",
166        "--show-annotation android.annotation.SystemApi",
167        "--error UnflaggedApi",
168    ],
169    installable: false,
170    check_api: {
171        last_released: {
172            api_file: ":android.car.api.combined.system.latest",
173            removed_api_file: ":android.car-removed.api.combined.system.latest",
174        },
175        current: {
176            api_file: "api/system-current.txt",
177            removed_api_file: "api/system-removed.txt",
178        },
179        api_lint: {
180            enabled: true,
181            new_since: ":android.car.api.combined.system.latest",
182            baseline_file: "api/system-lint-baseline.txt",
183        },
184    },
185}
186
187droidstubs {
188    name: "android.car-test-stubs-docs",
189    defaults: ["android.car-docs-default"],
190    flags: [
191        "--hide HiddenSuperclass",
192        "--hide UnavailableSymbol",
193        "--stub-packages android.car*",
194        "--show-annotation android.annotation.TestApi",
195        "--show-annotation android.annotation.SystemApi",
196    ],
197    installable: false,
198    check_api: {
199        current: {
200            api_file: "api/test-current.txt",
201            removed_api_file: "api/test-removed.txt",
202        },
203    },
204}
205
206droidstubs {
207    name: "android.car-stub-docs",
208    srcs: [
209        "src/**/*.java",
210    ],
211    libs: [
212        "android.car",
213    ],
214    api_filename: "api.txt",
215    flags: [
216        "--hide HiddenSuperclass",
217        "--hide UnavailableSymbol",
218        "--stub-packages android.car*",
219    ],
220    installable: false,
221}
222
223// Generates stubs for API documentation.
224droidstubs {
225    name: "car-doc-stubs",
226    srcs: [
227        "src/**/*.java",
228    ],
229    create_doc_stubs: true,
230    annotations_enabled: true,
231    previous_api: ":android.car.api.combined.public.latest",
232    merge_annotations_dirs: [
233        "metalava-manual",
234    ],
235    arg_files: [
236        "AndroidManifest.xml",
237    ],
238    // Add --verbose to print metalava details.
239    flags: [
240        "--manifest $(location AndroidManifest.xml)",
241        "--error UnhiddenSystemApi",
242        "--hide RequiresPermission",
243        "--hide CallbackInterface",
244        "--hide MissingPermission",
245        "--hide HiddenSuperclass",
246        "--hide DeprecationMismatch",
247        "--hide UnavailableSymbol ",
248        "--hide SdkConstant",
249        "--hide HiddenTypeParameter",
250        "--hide Todo ",
251    ],
252    write_sdk_values: true,
253}
254
255// Generates API docs for go/devsite.
256//
257// How API docs are generated:
258//    source files -> (droidstubs/metalava) -> stub source files -> (droiddoc/doclava) -> docs
259//
260// The metalava conversion is done by droidstub module "car-doc-stubs".
261//
262// TODO(b/162958231): Remove "ds-car-docs" from build/soong/java/legacy_core_platform_api_usage.go.
263droiddoc {
264    name: "ds-car-docs",
265    srcs: [
266        ":car-doc-stubs",
267    ],
268    libs: [
269        "stub-annotations",
270        "unsupportedappusage",
271    ],
272    custom_template: "droiddoc-templates-sdk",
273    // These variables that are used in doclava templates.
274    hdf: [
275        "dac true",
276        "sdk.preview 0", // Not a preview version.
277        "sdk.version 31",
278        "android.whichdoc online",
279        "android.hasSamples false",
280    ],
281    arg_files: [
282        "AndroidManifest.xml",
283    ],
284    proofread_file: "ds-sdk-docs-proofrerad.txt",
285    // See doclava docs in https://github.com/tinks/doclava.
286    // See error numbers in external/doclava/src/com/google/doclava/Errors.java.
287    // TODO(b/163831343): Add -werror -lerror to catch bad javadocs
288    flags: [
289        "-android -manifest $(location AndroidManifest.xml) -toroot / -devsite -yamlV2 " +
290            "-metalavaApiSince -hide 111 -hide 113 -hide 125 -hide 126 -hide 127 -hide 128 " +
291            "-stubpackages android.car -dac_libraryroot android/car ",
292    ],
293}
294
295java_defaults {
296    name: "android.car-stubs.jar_defaults",
297    java_version: "1.8",
298    installable: false,
299}
300
301java_defaults {
302    name: "android.car-stubs-dex.jar_defaults",
303    compile_dex: true,
304}
305
306java_library {
307    name: "android.car-stubs",
308    defaults: ["android.car-stubs.jar_defaults"],
309    srcs: [
310        ":android.car-stub-docs",
311    ],
312    sdk_version: "current",
313    dist: {
314        targets: ["dist_files"],
315    },
316    is_stubs_module: true,
317}
318
319java_library {
320    name: "android.car-stubs-dex",
321    defaults: ["android.car-stubs-dex.jar_defaults"],
322    static_libs: ["android.car-stubs"],
323    sdk_version: "current",
324}
325
326java_library {
327    name: "android.car-system-stubs",
328    defaults: ["android.car-stubs.jar_defaults"],
329    srcs: [
330        ":android.car-system-stubs-docs",
331    ],
332    sdk_version: "system_current",
333    dist: {
334        targets: ["dist_files"],
335    },
336}
337
338java_library {
339    name: "android.car-system-stubs-dex",
340    defaults: ["android.car-stubs-dex.jar_defaults"],
341    static_libs: ["android.car-system-stubs"],
342    sdk_version: "system_current",
343}
344
345java_library {
346    name: "android.car-test-stubs",
347    defaults: ["android.car-stubs.jar_defaults"],
348    srcs: [
349        ":android.car-test-stubs-docs",
350    ],
351    sdk_version: "test_current",
352}
353
354java_library {
355    name: "android.car-test-stubs-dex",
356    defaults: ["android.car-stubs-dex.jar_defaults"],
357    static_libs: ["android.car-test-stubs"],
358    sdk_version: "test_current",
359    dist: {
360        targets: ["dist_files"],
361    },
362}
363
364// Export the api/system-current.txt file.
365filegroup {
366    name: "car-api-system-current.txt",
367    visibility: [
368        "//cts/tests/signature/api",
369    ],
370    srcs: [
371        "api/system-current.txt",
372    ],
373}
374
375// Export the api/system-removed.txt file.
376filegroup {
377    name: "car-api-system-removed.txt",
378    visibility: [
379        "//cts/tests/signature/api",
380    ],
381    srcs: [
382        "api/system-removed.txt",
383    ],
384}
385
386genrule_defaults {
387    name: "car_signature_to_jdiff_defaults",
388    tools: ["metalava"],
389    cmd: "$(location metalava) signature-to-jdiff --strip $(in) $(out)",
390    dist: {
391        targets: ["dist_files"],
392    },
393}
394
395genrule {
396    name: "android.car-test-stubs-jdiff",
397    defaults: ["car_signature_to_jdiff_defaults"],
398    srcs: ["api/test-current.txt"],
399    out: ["car-test-api.xml"],
400}
401
402genrule {
403    name: "android.car-system-stubs-jdiff",
404    defaults: ["car_signature_to_jdiff_defaults"],
405    srcs: ["api/system-current.txt"],
406    out: ["car-system-api.xml"],
407}
408
409genrule {
410    name: "android.car-stubs-jdiff",
411    defaults: ["car_signature_to_jdiff_defaults"],
412    srcs: ["api/current.txt"],
413    out: ["car-api.xml"],
414}
415