// // Copyright (C) 2020 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // package { // See: http://go/android-license-faq default_applicable_licenses: ["Android-Apache-2.0"], } aidl_interface { name: "connectivity_native_aidl_interface", local_include_dir: "binder", vendor_available: true, srcs: [ "binder/android/net/connectivity/aidl/*.aidl", ], backend: { java: { apex_available: [ "com.android.tethering", ], min_sdk_version: "30", }, ndk: { apex_available: [ "com.android.tethering", ], min_sdk_version: "30", }, }, versions: ["1"], } cc_library_static { name: "connectivity_native_aidl_interface-lateststable-ndk", min_sdk_version: "30", whole_static_libs: [ "connectivity_native_aidl_interface-V1-ndk", ], apex_available: [ "com.android.tethering", ], } java_library { name: "connectivity_native_aidl_interface-lateststable-java", sdk_version: "system_current", min_sdk_version: "30", static_libs: [ "connectivity_native_aidl_interface-V1-java", ], apex_available: [ "com.android.tethering", ], } // The library name match the service-connectivity jarjar rules that put the JNI utils in the // android.net.connectivity.com.android.net.module.util package. cc_library_shared { name: "libandroid_net_connectivity_com_android_net_module_util_jni", min_sdk_version: "30", cflags: [ "-Wall", "-Werror", "-Wno-unused-parameter", "-Wthread-safety", ], srcs: [ "jni/com_android_net_module_util/onload.cpp", ], static_libs: [ "libnet_utils_device_common_bpfjni", "libnet_utils_device_common_bpfutils", ], shared_libs: [ "liblog", "libnativehelper", ], apex_available: [ "com.android.tethering", ], } cc_library_shared { name: "libservice-connectivity", min_sdk_version: "30", cflags: [ "-Wall", "-Werror", "-Wno-unused-parameter", "-Wthread-safety", ], srcs: [ ":services.connectivity-netstats-jni-sources", "jni/com_android_server_BpfNetMaps.cpp", "jni/com_android_server_connectivity_ClatCoordinator.cpp", "jni/com_android_server_TestNetworkService.cpp", "jni/onload.cpp", ], header_libs: [ "bpf_connectivity_headers", ], static_libs: [ "libclat", "libip_checksum", "libmodules-utils-build", "libnetjniutils", "libnet_utils_device_common_bpfjni", "libtraffic_controller", "netd_aidl_interface-lateststable-ndk", ], shared_libs: [ "libbase", "libcutils", "libnetdutils", "liblog", "libnativehelper", "libnetworkstats", ], apex_available: [ "com.android.tethering", ], } java_library { name: "service-connectivity-pre-jarjar", sdk_version: "system_server_current", min_sdk_version: "30", srcs: [ "src/**/*.java", ":framework-connectivity-shared-srcs", ":services-connectivity-shared-srcs", // TODO: move to net-utils-device-common ":connectivity-module-utils-srcs", ], libs: [ "framework-annotations-lib", "framework-connectivity-pre-jarjar", "framework-connectivity-t.stubs.module_lib", "framework-tethering.stubs.module_lib", "framework-wifi.stubs.module_lib", "unsupportedappusage", "ServiceConnectivityResources", ], static_libs: [ // Do not add libs here if they are already included // in framework-connectivity "connectivity-net-module-utils-bpf", "connectivity_native_aidl_interface-lateststable-java", "dnsresolver_aidl_interface-V9-java", "modules-utils-shell-command-handler", "net-utils-device-common", "net-utils-device-common-bpf", "net-utils-device-common-netlink", "net-utils-services-common", "netd-client", "networkstack-client", "PlatformProperties", "service-connectivity-protos", "NetworkStackApiStableShims", ], apex_available: [ "com.android.tethering", ], lint: { strict_updatability_linting: true }, visibility: [ "//packages/modules/Connectivity/service-t", "//packages/modules/Connectivity/tests:__subpackages__", ], } // TODO: Remove this temporary library and put code into module when test coverage is enough. java_library { name: "service-mdns", sdk_version: "system_server_current", min_sdk_version: "30", srcs: [ "mdns/**/*.java", ], libs: [ "framework-annotations-lib", "framework-connectivity-pre-jarjar", "framework-wifi.stubs.module_lib", "service-connectivity-pre-jarjar", ], visibility: [ "//packages/modules/Connectivity/tests:__subpackages__", ], } java_library { name: "service-connectivity-protos", sdk_version: "system_current", min_sdk_version: "30", proto: { type: "nano", }, srcs: [ ":system-messages-proto-src", ], libs: ["libprotobuf-java-nano"], apex_available: [ "com.android.tethering", ], lint: { strict_updatability_linting: true }, } java_defaults { name: "service-connectivity-defaults", sdk_version: "system_server_current", min_sdk_version: "30", // This library combines system server jars that have access to different bootclasspath jars. // Lower SDK service jars must not depend on higher SDK jars as that would let them // transitively depend on the wrong bootclasspath jars. Sources also cannot be added here as // they would transitively depend on bootclasspath jars that may not be available. static_libs: [ "service-connectivity-pre-jarjar", "service-connectivity-tiramisu-pre-jarjar", "service-nearby-pre-jarjar", ], jarjar_rules: ":connectivity-jarjar-rules", apex_available: [ "com.android.tethering", ], optimize: { enabled: true, shrink: true, proguard_flags_files: ["proguard.flags"], }, lint: { strict_updatability_linting: true }, } // A special library created strictly for use by the tests as they need the // implementation library but that is not available when building from prebuilts. // Using a library with a different name to what is used by the prebuilts ensures // that this will never depend on the prebuilt. // Switching service-connectivity to a java_sdk_library would also have worked as // that has built in support for managing this but that is too big a change at this // point. java_library { name: "service-connectivity-for-tests", defaults: ["service-connectivity-defaults"], } java_library { name: "service-connectivity", defaults: ["service-connectivity-defaults"], installable: true, } genrule { name: "connectivity-jarjar-rules", defaults: ["jarjar-rules-combine-defaults"], srcs: [ ":framework-connectivity-jarjar-rules", ":service-connectivity-jarjar-gen", ":service-nearby-jarjar-gen", ], out: ["connectivity-jarjar-rules.txt"], visibility: ["//packages/modules/Connectivity:__subpackages__"], } // TODO: This filegroup temporary exposes for NetworkStats. It should be // removed right after NetworkStats moves into mainline module. filegroup { name: "traffic-controller-utils", srcs: ["src/com/android/server/BpfNetMaps.java"], visibility: ["//packages/modules/Connectivity:__subpackages__"], } java_genrule { name: "service-connectivity-jarjar-gen", tool_files: [ ":service-connectivity-pre-jarjar{.jar}", ":service-connectivity-tiramisu-pre-jarjar{.jar}", "jarjar-excludes.txt", ], tools: [ "jarjar-rules-generator", ], out: ["service_connectivity_jarjar_rules.txt"], cmd: "$(location jarjar-rules-generator) " + "--jars $(location :service-connectivity-pre-jarjar{.jar}) " + "$(location :service-connectivity-tiramisu-pre-jarjar{.jar}) " + "--prefix android.net.connectivity " + "--excludes $(location jarjar-excludes.txt) " + "--output $(out)", visibility: ["//visibility:private"], } java_genrule { name: "service-nearby-jarjar-gen", tool_files: [ ":service-nearby-pre-jarjar{.jar}", "jarjar-excludes.txt", ], tools: [ "jarjar-rules-generator", ], out: ["service_nearby_jarjar_rules.txt"], cmd: "$(location jarjar-rules-generator) " + "--jars $(location :service-nearby-pre-jarjar{.jar}) " + "--prefix com.android.server.nearby " + "--excludes $(location jarjar-excludes.txt) " + "--output $(out)", visibility: ["//visibility:private"], }