blob: 691c1ad3aef580b562551e98fdcf2ad2bcffbf2a [file] [log] [blame]
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +09001//
2// Copyright (C) 2020 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
Bob Badour6c7ed9d2021-02-12 17:07:05 -080017package {
18 // See: http://go/android-license-faq
Baligh Uddin36847132021-05-23 16:38:40 +000019 default_applicable_licenses: ["Android-Apache-2.0"],
Bob Badour6c7ed9d2021-02-12 17:07:05 -080020}
21
Tyler Wearb37f5512021-10-01 13:22:00 -070022aidl_interface {
23 name: "connectivity_native_aidl_interface",
24 local_include_dir: "binder",
Tyler Wearb37f5512021-10-01 13:22:00 -070025 srcs: [
26 "binder/android/net/connectivity/aidl/*.aidl",
27 ],
28 backend: {
29 java: {
30 apex_available: [
31 "com.android.tethering",
32 ],
33 min_sdk_version: "30",
34 },
35 ndk: {
36 apex_available: [
37 "com.android.tethering",
38 ],
39 min_sdk_version: "30",
40 },
41 },
42 versions: ["1"],
43
44}
45
46cc_library_static {
47 name: "connectivity_native_aidl_interface-lateststable-ndk",
48 min_sdk_version: "30",
49 whole_static_libs: [
50 "connectivity_native_aidl_interface-V1-ndk",
51 ],
52 apex_available: [
53 "com.android.tethering",
54 ],
55}
56
57java_library {
58 name: "connectivity_native_aidl_interface-lateststable-java",
59 sdk_version: "system_current",
60 min_sdk_version: "30",
61 static_libs: [
62 "connectivity_native_aidl_interface-V1-java",
63 ],
64 apex_available: [
65 "com.android.tethering",
66 ],
67}
68
markchien8fb75e32021-11-11 17:53:56 +080069// The library name match the service-connectivity jarjar rules that put the JNI utils in the
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +090070// android.net.connectivity.com.android.net.module.util package.
markchien8fb75e32021-11-11 17:53:56 +080071cc_library_shared {
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +090072 name: "libandroid_net_connectivity_com_android_net_module_util_jni",
markchien8fb75e32021-11-11 17:53:56 +080073 min_sdk_version: "30",
74 cflags: [
75 "-Wall",
76 "-Werror",
77 "-Wno-unused-parameter",
78 "-Wthread-safety",
79 ],
80 srcs: [
81 "jni/com_android_net_module_util/onload.cpp",
82 ],
markchien8fb75e32021-11-11 17:53:56 +080083 static_libs: [
84 "libnet_utils_device_common_bpfjni",
Tyler Wearb37f5512021-10-01 13:22:00 -070085 "libnet_utils_device_common_bpfutils",
markchien8fb75e32021-11-11 17:53:56 +080086 ],
87 shared_libs: [
88 "liblog",
89 "libnativehelper",
90 ],
91 apex_available: [
92 "com.android.tethering",
93 ],
94}
95
Remi NGUYEN VANeaa96582021-01-08 01:19:44 +000096cc_library_shared {
97 name: "libservice-connectivity",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +000098 min_sdk_version: "30",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +090099 cflags: [
100 "-Wall",
101 "-Werror",
102 "-Wno-unused-parameter",
103 "-Wthread-safety",
104 ],
105 srcs: [
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900106 ":services.connectivity-netstats-jni-sources",
Patrick Rohr361b8592022-01-28 15:39:17 +0100107 "jni/com_android_server_BpfNetMaps.cpp",
Hungming Chene2cf0552021-12-25 17:05:41 +0800108 "jni/com_android_server_connectivity_ClatCoordinator.cpp",
Patrick Rohr361b8592022-01-28 15:39:17 +0100109 "jni/com_android_server_TestNetworkService.cpp",
Remi NGUYEN VANeaa96582021-01-08 01:19:44 +0000110 "jni/onload.cpp",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900111 ],
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000112 header_libs: [
Patrick Rohr361b8592022-01-28 15:39:17 +0100113 "bpf_connectivity_headers",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000114 ],
Hungming Chene2cf0552021-12-25 17:05:41 +0800115 static_libs: [
116 "libclat",
117 "libip_checksum",
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900118 "libmodules-utils-build",
Hungming Chene2cf0552021-12-25 17:05:41 +0800119 "libnetjniutils",
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900120 "libnet_utils_device_common_bpfjni",
Patrick Rohr361b8592022-01-28 15:39:17 +0100121 "libtraffic_controller",
122 "netd_aidl_interface-lateststable-ndk",
Hungming Chene2cf0552021-12-25 17:05:41 +0800123 ],
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900124 shared_libs: [
Maciej Żenczykowskidcae3512022-01-31 19:59:32 -0800125 "libbase",
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900126 "libcutils",
Maciej Żenczykowskidcae3512022-01-31 19:59:32 -0800127 "libnetdutils",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900128 "liblog",
129 "libnativehelper",
Remi NGUYEN VANd9504892022-02-02 13:03:29 +0900130 "libnetworkstats",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900131 ],
Pete Bentleyb1456112021-01-07 13:51:18 +0000132 apex_available: [
Remi NGUYEN VANeaa96582021-01-08 01:19:44 +0000133 "com.android.tethering",
Pete Bentleyb1456112021-01-07 13:51:18 +0000134 ],
135}
136
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900137java_library {
Aaron Huang63338842021-01-08 18:32:00 +0800138 name: "service-connectivity-pre-jarjar",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000139 sdk_version: "system_server_current",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000140 min_sdk_version: "30",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900141 srcs: [
Remi NGUYEN VANcdb45f82021-05-13 12:53:15 +0000142 "src/**/*.java",
Aaron Huang63338842021-01-08 18:32:00 +0800143 ":framework-connectivity-shared-srcs",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000144 ":services-connectivity-shared-srcs",
Motomu Utsumi166f9662022-09-01 10:35:29 +0900145 ":statslog-connectivity-java-gen",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900146 ],
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900147 libs: [
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000148 "framework-annotations-lib",
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +0900149 "framework-connectivity-pre-jarjar",
Paul Duffin5118a522022-10-05 18:34:24 +0100150 // The framework-connectivity-t library is only available on T+ platforms
151 // so any calls to it must be protected with a check to ensure that it is
152 // available. The linter will detect any unprotected calls through an API
153 // but not direct calls to the implementation. So, this depends on the
154 // module lib stubs directly to ensure the linter will work correctly
155 // as depending on framework-connectivity-t would cause it to be compiled
156 // against the implementation because the two libraries are in the same
157 // APEX.
paulhu537f7202022-02-08 21:25:28 +0800158 "framework-connectivity-t.stubs.module_lib",
Paul Duffin5118a522022-10-05 18:34:24 +0100159 "framework-tethering",
160 "framework-wifi",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900161 "unsupportedappusage",
Remi NGUYEN VAN907ebd42021-03-08 22:05:03 +0900162 "ServiceConnectivityResources",
Paul Duffin5118a522022-10-05 18:34:24 +0100163 "framework-statsd",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900164 ],
165 static_libs: [
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +0900166 // Do not add libs here if they are already included
167 // in framework-connectivity
Hungming Chen01f25502022-06-28 22:47:00 +0800168 "connectivity-net-module-utils-bpf",
Tyler Wearb37f5512021-10-01 13:22:00 -0700169 "connectivity_native_aidl_interface-lateststable-java",
Remi NGUYEN VAN30bebea2021-08-06 14:15:31 +0900170 "dnsresolver_aidl_interface-V9-java",
William Escandeea9e22e2021-08-19 12:26:52 +0200171 "modules-utils-shell-command-handler",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900172 "net-utils-device-common",
markchien8fb75e32021-11-11 17:53:56 +0800173 "net-utils-device-common-bpf",
Patrick Rohr734f24e2022-08-09 19:23:18 -0700174 "net-utils-device-common-ip",
Xiao Ma09c07272021-07-01 14:00:34 +0000175 "net-utils-device-common-netlink",
Xiao Ma0a171c02022-01-23 16:14:51 +0000176 "net-utils-services-common",
lucaslinef337532021-01-18 11:58:24 +0800177 "netd-client",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000178 "networkstack-client",
lifrc0d25c12021-03-09 17:24:46 +0800179 "PlatformProperties",
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900180 "service-connectivity-protos",
Frank Liec8c31d2022-11-15 02:59:05 +0000181 // TODO: Adding the stats protos currently affects test coverage.
182 // So remove the protos in ConnectivityService until all
183 // tests for proto apis are added.
184 //"service-connectivity-stats-protos",
Remi NGUYEN VANed02d612022-05-13 16:36:55 +0900185 "NetworkStackApiStableShims",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900186 ],
187 apex_available: [
Remi NGUYEN VANeaa96582021-01-08 01:19:44 +0000188 "com.android.tethering",
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900189 ],
Chiachang Wang3bc52762021-11-25 14:17:57 +0800190 lint: { strict_updatability_linting: true },
paulhu802ab972021-12-14 01:30:22 +0000191 visibility: [
192 "//packages/modules/Connectivity/service-t",
193 "//packages/modules/Connectivity/tests:__subpackages__",
194 ],
Remi NGUYEN VAN59262cb2020-12-21 18:40:08 +0900195}
Aaron Huang63338842021-01-08 18:32:00 +0800196
Paul Hu3e1f4482022-05-16 20:56:32 +0800197// TODO: Remove this temporary library and put code into module when test coverage is enough.
198java_library {
199 name: "service-mdns",
200 sdk_version: "system_server_current",
201 min_sdk_version: "30",
202 srcs: [
203 "mdns/**/*.java",
204 ],
205 libs: [
206 "framework-annotations-lib",
207 "framework-connectivity-pre-jarjar",
Paul Duffin5118a522022-10-05 18:34:24 +0100208 "framework-wifi",
Paul Hu3e1f4482022-05-16 20:56:32 +0800209 "service-connectivity-pre-jarjar",
210 ],
211 visibility: [
212 "//packages/modules/Connectivity/tests:__subpackages__",
213 ],
214}
215
Aaron Huang63338842021-01-08 18:32:00 +0800216java_library {
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900217 name: "service-connectivity-protos",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000218 sdk_version: "system_current",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000219 min_sdk_version: "30",
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900220 proto: {
221 type: "nano",
222 },
223 srcs: [
224 ":system-messages-proto-src",
225 ],
226 libs: ["libprotobuf-java-nano"],
227 apex_available: [
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900228 "com.android.tethering",
229 ],
Paul Duffin5118a522022-10-05 18:34:24 +0100230 lint: {
231 strict_updatability_linting: true,
232 },
Remi NGUYEN VANd8bc0fa2021-03-11 15:41:52 +0900233}
234
Paul Duffin5fc809f2022-05-20 14:15:42 +0000235java_defaults {
236 name: "service-connectivity-defaults",
Remi NGUYEN VAN4ee6c502021-03-22 10:25:12 +0000237 sdk_version: "system_server_current",
Remi NGUYEN VANda43ef02021-03-23 14:45:58 +0000238 min_sdk_version: "30",
zhidoub33a2632022-09-06 17:58:20 +0000239 defaults: [
240 "standalone-system-server-module-optimize-defaults",
241 ],
paulhu802ab972021-12-14 01:30:22 +0000242 // This library combines system server jars that have access to different bootclasspath jars.
243 // Lower SDK service jars must not depend on higher SDK jars as that would let them
244 // transitively depend on the wrong bootclasspath jars. Sources also cannot be added here as
Remi NGUYEN VAN371e7f72022-07-25 18:52:58 +0900245 // they would depend on bootclasspath jars that may not be available.
lifrc0d25c12021-03-09 17:24:46 +0800246 static_libs: [
Aaron Huang63338842021-01-08 18:32:00 +0800247 "service-connectivity-pre-jarjar",
paulhu802ab972021-12-14 01:30:22 +0000248 "service-connectivity-tiramisu-pre-jarjar",
Remi NGUYEN VANb6cde3d2022-03-10 04:32:15 +0000249 "service-nearby-pre-jarjar",
Aaron Huang63338842021-01-08 18:32:00 +0800250 ],
Remi NGUYEN VAN371e7f72022-07-25 18:52:58 +0900251 // The below libraries are not actually needed to build since no source is compiled
252 // (only combining prebuilt static_libs), but they are necessary so that R8 has the right
253 // references to optimize the code. Without these, there will be missing class warnings and
254 // code may be wrongly optimized.
255 // R8 runs after jarjar, so the framework-X libraries need to be the post-jarjar artifacts
256 // (.impl), if they are not just stubs, so that the name of jarjared classes match.
257 libs: [
258 "androidx.annotation_annotation",
259 "framework-annotations-lib",
260 "framework-connectivity.impl",
261 "framework-connectivity-t.impl",
Paul Duffin5118a522022-10-05 18:34:24 +0100262 "framework-tethering",
263 "framework-wifi",
Remi NGUYEN VAN371e7f72022-07-25 18:52:58 +0900264 "libprotobuf-java-nano",
265 ],
Remi NGUYEN VAN6a20eed2022-01-31 11:21:08 +0900266 jarjar_rules: ":connectivity-jarjar-rules",
Aaron Huang63338842021-01-08 18:32:00 +0800267 apex_available: [
Aaron Huang63338842021-01-08 18:32:00 +0800268 "com.android.tethering",
269 ],
Remi NGUYEN VANc6f8fb02022-04-20 18:58:53 +0900270 optimize: {
Remi NGUYEN VANc6f8fb02022-04-20 18:58:53 +0900271 proguard_flags_files: ["proguard.flags"],
272 },
Paul Duffin5118a522022-10-05 18:34:24 +0100273 lint: {
274 strict_updatability_linting: true,
275 },
Aaron Huang63338842021-01-08 18:32:00 +0800276}
Remi NGUYEN VAN8ea5ee62021-06-28 18:48:43 +0900277
Paul Duffin5fc809f2022-05-20 14:15:42 +0000278// A special library created strictly for use by the tests as they need the
279// implementation library but that is not available when building from prebuilts.
280// Using a library with a different name to what is used by the prebuilts ensures
281// that this will never depend on the prebuilt.
282// Switching service-connectivity to a java_sdk_library would also have worked as
283// that has built in support for managing this but that is too big a change at this
284// point.
285java_library {
286 name: "service-connectivity-for-tests",
287 defaults: ["service-connectivity-defaults"],
288}
289
290java_library {
291 name: "service-connectivity",
292 defaults: ["service-connectivity-defaults"],
293 installable: true,
294}
295
Frank Lie6b47f32022-10-25 18:57:10 +0000296java_library_static {
297 name: "service-connectivity-stats-protos",
298 sdk_version: "system_current",
299 min_sdk_version: "30",
300 proto: {
301 type: "lite",
302 },
303 srcs: [
304 "src/com/android/metrics/stats.proto",
305 ],
306 static_libs: ["ConnectivityServiceprotos"],
307 apex_available: ["com.android.tethering"],
308}
309
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900310genrule {
Remi NGUYEN VAN8ea5ee62021-06-28 18:48:43 +0900311 name: "connectivity-jarjar-rules",
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900312 defaults: ["jarjar-rules-combine-defaults"],
313 srcs: [
314 ":framework-connectivity-jarjar-rules",
315 ":service-connectivity-jarjar-gen",
316 ":service-nearby-jarjar-gen",
317 ],
318 out: ["connectivity-jarjar-rules.txt"],
Remi NGUYEN VAN8ea5ee62021-06-28 18:48:43 +0900319 visibility: ["//packages/modules/Connectivity:__subpackages__"],
320}
Wayne Ma0ea3bdc2022-01-12 01:12:11 +0800321
322// TODO: This filegroup temporary exposes for NetworkStats. It should be
323// removed right after NetworkStats moves into mainline module.
324filegroup {
325 name: "traffic-controller-utils",
326 srcs: ["src/com/android/server/BpfNetMaps.java"],
327 visibility: ["//packages/modules/Connectivity:__subpackages__"],
328}
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900329
330java_genrule {
331 name: "service-connectivity-jarjar-gen",
332 tool_files: [
333 ":service-connectivity-pre-jarjar{.jar}",
334 ":service-connectivity-tiramisu-pre-jarjar{.jar}",
335 "jarjar-excludes.txt",
336 ],
337 tools: [
338 "jarjar-rules-generator",
339 ],
340 out: ["service_connectivity_jarjar_rules.txt"],
341 cmd: "$(location jarjar-rules-generator) " +
Remi NGUYEN VAN0bd90f12022-08-10 20:15:46 +0900342 "$(location :service-connectivity-pre-jarjar{.jar}) " +
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900343 "$(location :service-connectivity-tiramisu-pre-jarjar{.jar}) " +
344 "--prefix android.net.connectivity " +
345 "--excludes $(location jarjar-excludes.txt) " +
346 "--output $(out)",
347 visibility: ["//visibility:private"],
348}
349
350java_genrule {
351 name: "service-nearby-jarjar-gen",
352 tool_files: [
353 ":service-nearby-pre-jarjar{.jar}",
354 "jarjar-excludes.txt",
355 ],
356 tools: [
357 "jarjar-rules-generator",
358 ],
359 out: ["service_nearby_jarjar_rules.txt"],
360 cmd: "$(location jarjar-rules-generator) " +
Remi NGUYEN VAN0bd90f12022-08-10 20:15:46 +0900361 "$(location :service-nearby-pre-jarjar{.jar}) " +
Remi NGUYEN VANe55a88d2022-04-20 15:59:16 +0900362 "--prefix com.android.server.nearby " +
363 "--excludes $(location jarjar-excludes.txt) " +
364 "--output $(out)",
365 visibility: ["//visibility:private"],
366}
Motomu Utsumi166f9662022-09-01 10:35:29 +0900367
368genrule {
Paul Duffin5118a522022-10-05 18:34:24 +0100369 name: "statslog-connectivity-java-gen",
370 tools: ["stats-log-api-gen"],
371 cmd: "$(location stats-log-api-gen) --java $(out) --module connectivity --javaPackage com.android.server --javaClass ConnectivityStatsLog",
372 out: ["com/android/server/ConnectivityStatsLog.java"],
Motomu Utsumi166f9662022-09-01 10:35:29 +0900373}