1package {
2    default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
5filegroup {
6    name: "framework-bluetooth-sources",
7    defaults: ["framework-sources-module-defaults"],
8    srcs: [
9        "java/**/*.aidl",
10        "java/**/*.java",
11    ],
12    path: "java",
13    visibility: ["//packages/modules/Bluetooth/framework/tests/unit"],
14}
15
16// defaults shared between `framework-bluetooth` & `framework-bluetooth-pre-jarjar`
17// java_sdk_library `framework-bluetooth` needs sources to generate stubs, so it cannot reuse
18// `framework-bluetooth-pre-jarjar`
19java_defaults {
20    name: "framework-bluetooth-defaults",
21    static_libs: [
22        "PlatformProperties",
23        "bluetooth_constants_java",
24        "bluetooth_flags_java_lib",
25        "modules-utils-build",
26        "modules-utils-expresslog",
27        "service-bluetooth-binder-aidl",
28    ],
29    libs: [
30        "app-compat-annotations",
31        "framework-tethering.stubs.module_lib",
32        "unsupportedappusage", // for android.compat.annotation.UnsupportedAppUsage
33    ],
34    stub_only_libs: [
35        // TODO: b/332362688 --- Metalava should already ignore our library
36        "bluetooth_flags_java_lib",
37        "framework-tethering.stubs.module_lib",
38    ],
39    srcs: [
40        ":Bluetooth-binder-aidl",
41        ":framework-bluetooth-sources",
42    ],
43    min_sdk_version: "Tiramisu",
44}
45
46// bluetooth-service needs pre-jarjared version of framework-bluetooth so it can reference copied utility
47// classes before they are renamed.
48java_library {
49    name: "framework-bluetooth-pre-jarjar",
50    defaults: ["framework-bluetooth-defaults"],
51    sdk_version: "module_current",
52    libs: ["framework-annotations-lib"],
53    installable: false,
54    visibility: ["//packages/modules/Bluetooth:__subpackages__"],
55}
56
57// post-jarjar version of framework-bluetooth
58java_sdk_library {
59    name: "framework-bluetooth",
60    defaults: [
61        "bluetooth_framework_errorprone_rules",
62        "framework-bluetooth-defaults",
63        "framework-module-defaults",
64    ],
65
66    jarjar_rules: ":bluetooth-jarjar-rules",
67    installable: true,
68    optimize: {
69        enabled: false,
70    },
71    hostdex: true, // for hiddenapi check
72
73    impl_library_visibility: [
74        "//external/sl4a/Common",
75        "//packages/modules/Bluetooth/android/app/tests/unit",
76        "//packages/modules/Bluetooth/android/pandora/server",
77        "//packages/modules/Bluetooth/framework/tests/bumble",
78        "//packages/modules/Bluetooth/service",
79        "//packages/services/Car/car-builtin-lib",
80        // TODO(240720385)
81        "//packages/services/Car/tests/CarBuiltinLibUnitTest",
82        ":__subpackages__",
83    ],
84
85    apex_available: [
86        "com.android.btservices",
87    ],
88
89    permitted_packages: [
90        "android.bluetooth",
91        "com.android.bluetooth.jarjar",
92    ],
93    aconfig_declarations: [
94        "bluetooth_aconfig_flags",
95    ],
96    lint: {
97        error_checks: [
98            "Autofill",
99            "DefaultLocale",
100            "DuplicateDefinition",
101            "ExtraText",
102            "ExtraTranslation",
103            "FlaggedApi",
104            "GestureBackNavigation",
105            "GetterSetterNullability",
106            "GuardedLogInvocation",
107            "HandlerLeak",
108            "InflateParams",
109            "LabelFor",
110            "MissingClass",
111            "MonochromeLauncherIcon",
112            "NewApi",
113            "ObsoleteSdkInt",
114            "Recycle",
115            "RtlHardcoded",
116            "RtlSymmetry",
117            "ScrollViewSize",
118            "SetTextI18n",
119            "SimpleDateFormat",
120            "StaticFieldLeak",
121            "StringFormatCount",
122            "StringFormatInvalid",
123            "SupportAnnotationUsage",
124            "TextFields",
125            "TypographyEllipsis",
126            "UseSparseArrays",
127            "UseValueOf",
128            "VectorPath",
129            "VisibleForTests",
130            "Wakelock",
131            "WakelockTimeout",
132            "WrongConstant",
133        ],
134        strict_updatability_linting: true,
135        baseline_filename: "lint-baseline.xml",
136    },
137}
138
139// defaults for tests that need to build against framework-bluetooths's @hide APIs
140java_defaults {
141    name: "framework-bluetooth-tests-defaults",
142    sdk_version: "core_platform",
143    libs: [
144        // order matters: classes in framework-bluetooth are resolved before framework, meaning
145        // @hide APIs in framework-bluetooth are resolved before @SystemApi stubs in framework
146        "framework-bluetooth.impl",
147
148        "framework",
149        // if sdk_version="" this gets automatically included, but here we need to add manually.
150        "framework-res",
151    ],
152    defaults_visibility: ["//packages/modules/Bluetooth:__subpackages__"],
153}
154
155filegroup {
156    name: "bluetooth-jarjar-rules",
157    srcs: ["jarjar-rules.txt"],
158}
159
160platform_compat_config {
161    name: "framework-bluetooth-compat-config",
162    src: ":framework-bluetooth",
163}
164