363 lines
12 KiB
Plaintext
363 lines
12 KiB
Plaintext
//
|
|
// 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",
|
|
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",
|
|
// NetworkStackApiShimSettingsForCurrentBranch provides the latest available shims depending on
|
|
// the branch to "service-connectivity".
|
|
// There are Tethering.apk and TetheringNext.apk variants for the tethering APEX,
|
|
// which use NetworkStackApiStableShims and NetworkStackApiCurrentShims respectively.
|
|
// Note that there can be no service-connectivity-next because it would need to be configured in
|
|
// default_art_config.mk which doesn't support conditionals, hence this scheme of using a
|
|
// variable here.
|
|
defaults: ["NetworkStackApiShimSettingsForCurrentBranch"],
|
|
srcs: [
|
|
"src/**/*.java",
|
|
":framework-connectivity-shared-srcs",
|
|
":services-connectivity-shared-srcs",
|
|
":statslog-connectivity-java-gen",
|
|
],
|
|
libs: [
|
|
"framework-annotations-lib",
|
|
"framework-configinfrastructure",
|
|
"framework-connectivity-pre-jarjar",
|
|
// The framework-connectivity-t library is only available on T+ platforms
|
|
// so any calls to it must be protected with a check to ensure that it is
|
|
// available. The linter will detect any unprotected calls through an API
|
|
// but not direct calls to the implementation. So, this depends on the
|
|
// module lib stubs directly to ensure the linter will work correctly
|
|
// as depending on framework-connectivity-t would cause it to be compiled
|
|
// against the implementation because the two libraries are in the same
|
|
// APEX.
|
|
"framework-connectivity-t.stubs.module_lib",
|
|
// TODO: figure out why just using "framework-tethering" uses the stubs, even though both
|
|
// service-connectivity and framework-tethering are in the same APEX.
|
|
"framework-tethering.impl",
|
|
"framework-wifi",
|
|
"unsupportedappusage",
|
|
"ServiceConnectivityResources",
|
|
"framework-statsd",
|
|
],
|
|
static_libs: [
|
|
// Do not add libs here if they are already included
|
|
// in framework-connectivity
|
|
"androidx.annotation_annotation",
|
|
"connectivity-net-module-utils-bpf",
|
|
"connectivity_native_aidl_interface-lateststable-java",
|
|
"dnsresolver_aidl_interface-V11-java",
|
|
"modules-utils-shell-command-handler",
|
|
"net-utils-device-common",
|
|
"net-utils-device-common-bpf",
|
|
"net-utils-device-common-ip",
|
|
"net-utils-device-common-netlink",
|
|
"net-utils-services-common",
|
|
"netd-client",
|
|
"networkstack-client",
|
|
"PlatformProperties",
|
|
"service-connectivity-protos",
|
|
"service-connectivity-stats-protos",
|
|
],
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
lint: { strict_updatability_linting: true },
|
|
visibility: [
|
|
"//packages/modules/Connectivity/service-t",
|
|
"//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",
|
|
defaults: [
|
|
"standalone-system-server-module-optimize-defaults",
|
|
],
|
|
// 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 depend on bootclasspath jars that may not be available.
|
|
static_libs: [
|
|
"service-connectivity-pre-jarjar",
|
|
"service-connectivity-tiramisu-pre-jarjar",
|
|
"service-nearby-pre-jarjar",
|
|
],
|
|
// The below libraries are not actually needed to build since no source is compiled
|
|
// (only combining prebuilt static_libs), but they are necessary so that R8 has the right
|
|
// references to optimize the code. Without these, there will be missing class warnings and
|
|
// code may be wrongly optimized.
|
|
// R8 runs after jarjar, so the framework-X libraries need to be the post-jarjar artifacts
|
|
// (.impl), if they are not just stubs, so that the name of jarjared classes match.
|
|
libs: [
|
|
"androidx.annotation_annotation",
|
|
"framework-annotations-lib",
|
|
"framework-connectivity.impl",
|
|
"framework-connectivity-t.impl",
|
|
"framework-tethering.impl",
|
|
"framework-wifi",
|
|
"libprotobuf-java-nano",
|
|
],
|
|
jarjar_rules: ":connectivity-jarjar-rules",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
optimize: {
|
|
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,
|
|
}
|
|
|
|
java_library_static {
|
|
name: "service-connectivity-stats-protos",
|
|
sdk_version: "system_current",
|
|
min_sdk_version: "30",
|
|
proto: {
|
|
type: "lite",
|
|
},
|
|
srcs: [
|
|
"src/com/android/metrics/stats.proto",
|
|
],
|
|
static_libs: ["ConnectivityServiceprotos"],
|
|
apex_available: ["com.android.tethering"],
|
|
}
|
|
|
|
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) " +
|
|
"$(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) " +
|
|
"$(location :service-nearby-pre-jarjar{.jar}) " +
|
|
"--prefix com.android.server.nearby " +
|
|
"--excludes $(location jarjar-excludes.txt) " +
|
|
"--output $(out)",
|
|
visibility: ["//visibility:private"],
|
|
}
|
|
|
|
genrule {
|
|
name: "statslog-connectivity-java-gen",
|
|
tools: ["stats-log-api-gen"],
|
|
cmd: "$(location stats-log-api-gen) --java $(out) --module connectivity --javaPackage com.android.server --javaClass ConnectivityStatsLog",
|
|
out: ["com/android/server/ConnectivityStatsLog.java"],
|
|
}
|