1package {
2    // See: http://go/android-license-faq
3    // A large-scale-change added 'default_applicable_licenses' to import
4    // all of the 'license_kinds' from "system_bt_license"
5    // to get the below license kinds:
6    //   SPDX-license-identifier-Apache-2.0
7    default_applicable_licenses: ["system_bt_license"],
8}
9
10linker_config {
11    name: "btservices-linker-config",
12    src: "linker.config.json",
13    installable: false,
14}
15
16// Mainline bluetooth apex module.
17apex {
18    name: "com.android.btservices",
19    defaults: ["t-launched-apex-module"],
20    manifest: "apex_manifest.json",
21    bootclasspath_fragments: ["com.android.btservices-bootclasspath-fragment"],
22    systemserverclasspath_fragments: ["com.android.btservices-systemserverclasspath-fragment"],
23    compat_configs: [
24        "bluetooth-compat-config",
25        "bluetoothapk-platform-compat-config",
26        "framework-bluetooth-compat-config",
27    ],
28    apps: ["Bluetooth"],
29
30    multilib: {
31        first: {
32            // Extractor process runs only with the primary ABI.
33            jni_libs: [
34                "libbluetooth_jni",
35            ],
36        },
37    },
38
39    prebuilts: [
40        "audio_set_configurations_bfbs",
41        "audio_set_configurations_json",
42        "audio_set_scenarios_bfbs",
43        "audio_set_scenarios_json",
44        "bt_did.conf",
45        "bt_stack.conf",
46        "btservices-linker-config",
47        "interop_database.conf",
48    ],
49    key: "com.android.btservices.key",
50    certificate: ":com.android.btservices.certificate",
51    updatable: true,
52    compressible: false,
53    visibility: ["//packages/modules/common/build"],
54}
55
56apex_key {
57    name: "com.android.btservices.key",
58    public_key: "com.android.btservices.avbpubkey",
59    private_key: "com.android.btservices.pem",
60}
61
62android_app_certificate {
63    name: "com.android.btservices.certificate",
64    certificate: "com.android.btservices",
65}
66
67sdk {
68    name: "btservices-module-sdk",
69    apexes: [
70        // Adds exportable dependencies of the APEX to the sdk,
71        // e.g. *classpath_fragments.
72        "com.android.btservices",
73    ],
74}
75
76// Encapsulate the contributions made by the com.android.bluetooth to the bootclasspath.
77bootclasspath_fragment {
78    name: "com.android.btservices-bootclasspath-fragment",
79    contents: ["framework-bluetooth"],
80    apex_available: ["com.android.btservices"],
81
82    // The bootclasspath_fragments that provide APIs on which this depends.
83    fragments: [
84        {
85            apex: "com.android.art",
86            module: "art-bootclasspath-fragment",
87        },
88    ],
89
90    // Additional stubs libraries that this fragment's contents use which are
91    // not provided by another bootclasspath_fragment.
92    additional_stubs: [
93        "android-non-updatable",
94    ],
95
96    // Additional hidden API flag files to override the defaults. This must only be
97    // modified by the Soong or platform compat team.
98    hidden_api: {
99        max_target_o_low_priority: ["hiddenapi/hiddenapi-max-target-o-low-priority.txt"],
100        max_target_r_low_priority: ["hiddenapi/hiddenapi-max-target-r-low-priority.txt"],
101        unsupported: ["hiddenapi/hiddenapi-unsupported.txt"],
102
103        // The following packages contain classes from other modules on the
104        // bootclasspath. That means that the hidden API flags for this module
105        // has to explicitly list every single class this module provides in
106        // that package to differentiate them from the classes provided by other
107        // modules. That can include private classes that are not part of the
108        // API.
109        split_packages: [
110            "android.bluetooth",
111        ],
112
113        // The following packages and all their subpackages currently only
114        // contain classes from this bootclasspath_fragment. Listing a package
115        // here won't prevent other bootclasspath modules from adding classes in
116        // any of those packages but it will prevent them from adding those
117        // classes into an API surface, e.g. public, system, etc.. Doing so will
118        // result in a build failure due to inconsistent flags.
119        package_prefixes: [
120            "android.bluetooth.le",
121            "com.android.bluetooth",
122        ],
123    },
124
125}
126
127systemserverclasspath_fragment {
128    name: "com.android.btservices-systemserverclasspath-fragment",
129    standalone_contents: ["service-bluetooth"],
130    apex_available: ["com.android.btservices"],
131}
132