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    ],
31    key: "com.android.wifi.key",
32    certificate: ":com.android.wifi.certificate",
33    apps: [
34        "OsuLogin",
35        "ServiceWifiResources",
36        "WifiDialog",
37    ],
38    defaults: ["r-launched-apex-module"],
39    // Indicates that pre-installed version of this apex can be compressed.
40    // Whether it actually will be compressed is controlled on per-device basis.
41    compressible: true,
42}
43
44filegroup {
45    name: "com.android.wifi-androidManifest",
46    srcs: ["AndroidManifest.xml"],
47}
48
49// Mainline wifi apex module.
50apex {
51    name: "com.android.wifi",
52    defaults: ["com.android.wifi-defaults"],
53    manifest: "apex_manifest.json",
54}
55
56apex_key {
57    name: "com.android.wifi.key",
58    public_key: "com.android.wifi.avbpubkey",
59    private_key: "com.android.wifi.pem",
60}
61
62android_app_certificate {
63    name: "com.android.wifi.certificate",
64    certificate: "com.android.wifi",
65}
66
67sdk {
68    name: "wifi-module-sdk",
69    apexes: [
70        // Adds exportable dependencies of the APEX to the sdk,
71        // e.g. *classpath_fragments.
72        "com.android.wifi",
73    ],
74}
75
76// Encapsulate the contributions made by the com.android.wifi to the bootclasspath.
77bootclasspath_fragment {
78    name: "com.android.wifi-bootclasspath-fragment",
79    contents: ["framework-wifi"],
80    apex_available: ["com.android.wifi"],
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.net.wifi",
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.net.wifi.aware",
121            "android.net.wifi.hotspot2",
122            "android.net.wifi.p2p",
123            "android.net.wifi.rtt",
124            "android.net.wifi.twt",
125            "android.net.wifi.util",
126            "com.android.wifi",
127        ],
128    },
129}
130
131systemserverclasspath_fragment {
132    name: "com.android.wifi-systemserverclasspath-fragment",
133    standalone_contents: ["service-wifi"],
134    apex_available: ["com.android.wifi"],
135}
136