1//
2// Copyright (C) 2019 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//
16
17package {
18    default_applicable_licenses: ["Android-Apache-2.0"],
19}
20
21apex_defaults {
22    name: "com.android.wifi-defaults",
23    androidManifest: ":com.android.wifi-androidManifest",
24    bootclasspath_fragments: ["com.android.wifi-bootclasspath-fragment"],
25    systemserverclasspath_fragments: ["com.android.wifi-systemserverclasspath-fragment"],
26    compat_configs: ["wifi-compat-config"],
27    // from build rule `cacerts_wfa`
28    prebuilts: [
29        "cacerts_wfa",
30        "mainline_supplicant_conf",
31        "mainline_supplicant_rc",
32    ],
33    key: "com.android.wifi.key",
34    certificate: ":com.android.wifi.certificate",
35    apps: [
36        "OsuLogin",
37        "ServiceWifiResources",
38        "WifiDialog",
39    ],
40    binaries: select(release_flag("RELEASE_WIFI_MAINLINE_SUPPLICANT_BINARY"), {
41        true: ["wpa_supplicant_mainline"],
42        default: [],
43    }),
44    jni_libs: [
45        "libservice-wifi-jni",
46    ],
47    defaults: ["r-launched-apex-module"],
48    // Indicates that pre-installed version of this apex can be compressed.
49    // Whether it actually will be compressed is controlled on per-device basis.
50    compressible: true,
51}
52
53filegroup {
54    name: "com.android.wifi-androidManifest",
55    srcs: ["AndroidManifest.xml"],
56}
57
58// Mainline wifi apex module.
59apex {
60    name: "com.android.wifi",
61    defaults: ["com.android.wifi-defaults"],
62    manifest: "apex_manifest.json",
63}
64
65apex_key {
66    name: "com.android.wifi.key",
67    public_key: "com.android.wifi.avbpubkey",
68    private_key: "com.android.wifi.pem",
69}
70
71android_app_certificate {
72    name: "com.android.wifi.certificate",
73    certificate: "com.android.wifi",
74}
75
76sdk {
77    name: "wifi-module-sdk",
78    apexes: [
79        // Adds exportable dependencies of the APEX to the sdk,
80        // e.g. *classpath_fragments.
81        "com.android.wifi",
82    ],
83}
84
85// Encapsulate the contributions made by the com.android.wifi to the bootclasspath.
86bootclasspath_fragment {
87    name: "com.android.wifi-bootclasspath-fragment",
88    contents: ["framework-wifi"],
89    apex_available: ["com.android.wifi"],
90
91    // The bootclasspath_fragments that provide APIs on which this depends.
92    fragments: [
93        {
94            apex: "com.android.art",
95            module: "art-bootclasspath-fragment",
96        },
97    ],
98
99    // Additional stubs libraries that this fragment's contents use which are
100    // not provided by another bootclasspath_fragment.
101    additional_stubs: [
102        "android-non-updatable",
103    ],
104
105    // Additional hidden API flag files to override the defaults. This must only be
106    // modified by the Soong or platform compat team.
107    hidden_api: {
108        max_target_o_low_priority: ["hiddenapi/hiddenapi-max-target-o-low-priority.txt"],
109        max_target_r_low_priority: ["hiddenapi/hiddenapi-max-target-r-low-priority.txt"],
110        unsupported: ["hiddenapi/hiddenapi-unsupported.txt"],
111
112        // The following packages contain classes from other modules on the
113        // bootclasspath. That means that the hidden API flags for this module
114        // has to explicitly list every single class this module provides in
115        // that package to differentiate them from the classes provided by other
116        // modules. That can include private classes that are not part of the
117        // API.
118        split_packages: [
119            "android.net.wifi",
120        ],
121
122        // The following packages and all their subpackages currently only
123        // contain classes from this bootclasspath_fragment. Listing a package
124        // here won't prevent other bootclasspath modules from adding classes in
125        // any of those packages but it will prevent them from adding those
126        // classes into an API surface, e.g. public, system, etc.. Doing so will
127        // result in a build failure due to inconsistent flags.
128        package_prefixes: [
129            "android.net.wifi.aware",
130            "android.net.wifi.hotspot2",
131            "android.net.wifi.p2p",
132            "android.net.wifi.rtt",
133            "android.net.wifi.twt",
134            "android.net.wifi.usd",
135            "android.net.wifi.util",
136            "com.android.wifi",
137        ],
138    },
139}
140
141systemserverclasspath_fragment {
142    name: "com.android.wifi-systemserverclasspath-fragment",
143    standalone_contents: ["service-wifi"],
144    apex_available: ["com.android.wifi"],
145}
146