* changes: Add java_defaults for @FlaggedApi handling Prepare api directory for udc mainline branch
312 lines
10 KiB
Plaintext
312 lines
10 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"],
|
|
}
|
|
|
|
// In the branch which does not support FlaggedAPI, use this default to ignore the annotated APIs.
|
|
java_defaults {
|
|
name: "FlaggedApiDefaults",
|
|
}
|
|
|
|
// The above variables may have different values
|
|
// depending on the branch, and this comment helps
|
|
// separate them from the rest of the file to avoid merge conflicts
|
|
|
|
filegroup {
|
|
name: "framework-connectivity-internal-sources",
|
|
srcs: [
|
|
"src/**/*.java",
|
|
"src/**/*.aidl",
|
|
],
|
|
path: "src",
|
|
visibility: [
|
|
"//visibility:private",
|
|
],
|
|
}
|
|
|
|
filegroup {
|
|
name: "framework-connectivity-aidl-export-sources",
|
|
srcs: [
|
|
"aidl-export/**/*.aidl",
|
|
],
|
|
path: "aidl-export",
|
|
visibility: [
|
|
"//visibility:private",
|
|
],
|
|
}
|
|
|
|
// TODO: use a java_library in the bootclasspath instead
|
|
filegroup {
|
|
name: "framework-connectivity-sources",
|
|
defaults: ["framework-sources-module-defaults"],
|
|
srcs: [
|
|
":framework-connectivity-internal-sources",
|
|
":framework-connectivity-aidl-export-sources",
|
|
],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"],
|
|
}
|
|
|
|
java_defaults {
|
|
name: "framework-connectivity-defaults",
|
|
defaults: ["framework-module-defaults"],
|
|
sdk_version: "module_current",
|
|
min_sdk_version: "30",
|
|
srcs: [
|
|
":framework-connectivity-sources",
|
|
":net-utils-framework-common-srcs",
|
|
":framework-connectivity-api-shared-srcs",
|
|
],
|
|
aidl: {
|
|
generate_get_transaction_name: true,
|
|
include_dirs: [
|
|
// Include directories for parcelables that are part of the stable API, and need a
|
|
// one-line "parcelable X" .aidl declaration to be used in AIDL interfaces.
|
|
// TODO(b/180293679): remove these dependencies as they should not be necessary once
|
|
// the module builds against API (the parcelable declarations exist in framework.aidl)
|
|
"frameworks/base/core/java", // For framework parcelables
|
|
"frameworks/native/aidl/binder", // For PersistableBundle.aidl
|
|
],
|
|
},
|
|
stub_only_libs: [
|
|
"framework-connectivity-t.stubs.module_lib",
|
|
],
|
|
impl_only_libs: [
|
|
// TODO: figure out why just using "framework-tethering" uses the stubs, even though both
|
|
// framework-connectivity and framework-tethering are in the same APEX.
|
|
"framework-location.stubs.module_lib",
|
|
"framework-tethering.impl",
|
|
"framework-wifi.stubs.module_lib",
|
|
],
|
|
static_libs: [
|
|
"mdns_aidl_interface-lateststable-java",
|
|
"modules-utils-backgroundthread",
|
|
"modules-utils-build",
|
|
"modules-utils-preconditions",
|
|
"framework-connectivity-javastream-protos",
|
|
],
|
|
impl_only_static_libs: [
|
|
"net-utils-device-common-struct",
|
|
],
|
|
libs: [
|
|
"androidx.annotation_annotation",
|
|
"app-compat-annotations",
|
|
"framework-connectivity-t.stubs.module_lib",
|
|
"unsupportedappusage",
|
|
],
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
lint: { strict_updatability_linting: true },
|
|
}
|
|
|
|
java_library {
|
|
name: "framework-connectivity-pre-jarjar",
|
|
defaults: [
|
|
"framework-connectivity-defaults",
|
|
],
|
|
static_libs: [
|
|
"httpclient_api",
|
|
"httpclient_impl",
|
|
"http_client_logging",
|
|
// Framework-connectivity-pre-jarjar is identical to framework-connectivity
|
|
// implementation, but without the jarjar rules. However, framework-connectivity
|
|
// is not based on framework-connectivity-pre-jarjar, it's rebuilt from source
|
|
// to generate the SDK stubs.
|
|
// Even if the library is included in "impl_only_static_libs" of defaults. This is still
|
|
// needed because java_library which doesn't understand "impl_only_static_libs".
|
|
"net-utils-device-common-struct",
|
|
],
|
|
libs: [
|
|
// This cannot be in the defaults clause above because if it were, it would be used
|
|
// to generate the connectivity stubs. That would create a circular dependency
|
|
// because the tethering impl depend on the connectivity stubs (e.g.,
|
|
// TetheringRequest depends on LinkAddress).
|
|
"framework-location.stubs.module_lib",
|
|
"framework-tethering.impl",
|
|
"framework-wifi.stubs.module_lib",
|
|
],
|
|
visibility: ["//packages/modules/Connectivity:__subpackages__"]
|
|
}
|
|
|
|
java_defaults {
|
|
name: "CronetJavaDefaults",
|
|
srcs: [":httpclient_api_sources"],
|
|
libs: [
|
|
"androidx.annotation_annotation",
|
|
],
|
|
impl_only_static_libs: [
|
|
"httpclient_impl",
|
|
"http_client_logging",
|
|
],
|
|
}
|
|
|
|
java_sdk_library {
|
|
name: "framework-connectivity",
|
|
defaults: [
|
|
"framework-connectivity-defaults",
|
|
"CronetJavaDefaults",
|
|
"FlaggedApiDefaults",
|
|
],
|
|
installable: true,
|
|
jarjar_rules: ":framework-connectivity-jarjar-rules",
|
|
permitted_packages: ["android.net"],
|
|
impl_library_visibility: [
|
|
"//packages/modules/Connectivity/Tethering/apex",
|
|
// In preparation for future move
|
|
"//packages/modules/Connectivity/apex",
|
|
"//packages/modules/Connectivity/framework-t",
|
|
"//packages/modules/Connectivity/service",
|
|
"//packages/modules/Connectivity/service-t",
|
|
"//frameworks/base/packages/Connectivity/service",
|
|
"//frameworks/base",
|
|
|
|
// Tests using hidden APIs
|
|
"//cts/tests/netlegacy22.api",
|
|
"//cts/tests/tests/app.usage", // NetworkUsageStatsTest
|
|
"//external/sl4a:__subpackages__",
|
|
"//frameworks/base/packages/Connectivity/tests:__subpackages__",
|
|
"//frameworks/base/core/tests/bandwidthtests",
|
|
"//frameworks/base/core/tests/benchmarks",
|
|
"//frameworks/base/core/tests/utillib",
|
|
"//frameworks/base/tests/vcn",
|
|
"//frameworks/opt/net/ethernet/tests:__subpackages__",
|
|
"//frameworks/opt/telephony/tests/telephonytests",
|
|
"//packages/modules/CaptivePortalLogin/tests",
|
|
"//packages/modules/Connectivity/staticlibs/testutils",
|
|
"//packages/modules/Connectivity/staticlibs/tests:__subpackages__",
|
|
"//packages/modules/Connectivity/Cronet/tests:__subpackages__",
|
|
"//packages/modules/Connectivity/Tethering/tests:__subpackages__",
|
|
"//packages/modules/Connectivity/tests:__subpackages__",
|
|
"//packages/modules/IPsec/tests/iketests",
|
|
"//packages/modules/NetworkStack/tests:__subpackages__",
|
|
"//packages/modules/Wifi/service/tests/wifitests",
|
|
],
|
|
}
|
|
|
|
platform_compat_config {
|
|
name: "connectivity-platform-compat-config",
|
|
src: ":framework-connectivity",
|
|
}
|
|
|
|
cc_library_shared {
|
|
name: "libframework-connectivity-jni",
|
|
min_sdk_version: "30",
|
|
cflags: [
|
|
"-Wall",
|
|
"-Werror",
|
|
"-Wno-unused-parameter",
|
|
// Don't warn about S API usage even with
|
|
// min_sdk 30: the library is only loaded
|
|
// on S+ devices
|
|
"-Wno-unguarded-availability",
|
|
"-Wthread-safety",
|
|
],
|
|
srcs: [
|
|
"jni/android_net_NetworkUtils.cpp",
|
|
"jni/onload.cpp",
|
|
],
|
|
shared_libs: [
|
|
"libandroid",
|
|
"liblog",
|
|
"libnativehelper",
|
|
],
|
|
header_libs: [
|
|
"bpf_headers",
|
|
"dnsproxyd_protocol_headers",
|
|
],
|
|
stl: "none",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
filegroup {
|
|
name: "framework-connectivity-protos",
|
|
srcs: [
|
|
"proto/**/*.proto",
|
|
],
|
|
visibility: ["//frameworks/base"],
|
|
}
|
|
|
|
java_library {
|
|
name: "framework-connectivity-javastream-protos",
|
|
proto: {
|
|
type: "stream",
|
|
},
|
|
srcs: [":framework-connectivity-protos"],
|
|
installable: false,
|
|
sdk_version: "module_current",
|
|
min_sdk_version: "30",
|
|
apex_available: [
|
|
"com.android.tethering",
|
|
],
|
|
}
|
|
|
|
java_genrule {
|
|
name: "framework-connectivity-jarjar-rules",
|
|
tool_files: [
|
|
":connectivity-hiddenapi-files",
|
|
":framework-connectivity-pre-jarjar{.jar}",
|
|
":framework-connectivity-t-pre-jarjar{.jar}",
|
|
":framework-connectivity.stubs.module_lib{.jar}",
|
|
":framework-connectivity-t.stubs.module_lib{.jar}",
|
|
"jarjar-excludes.txt",
|
|
],
|
|
tools: [
|
|
"jarjar-rules-generator",
|
|
],
|
|
out: ["framework_connectivity_jarjar_rules.txt"],
|
|
cmd: "$(location jarjar-rules-generator) " +
|
|
"$(location :framework-connectivity-pre-jarjar{.jar}) " +
|
|
"$(location :framework-connectivity-t-pre-jarjar{.jar}) " +
|
|
"--prefix android.net.connectivity " +
|
|
"--apistubs $(location :framework-connectivity.stubs.module_lib{.jar}) " +
|
|
"--apistubs $(location :framework-connectivity-t.stubs.module_lib{.jar}) " +
|
|
// Make a ":"-separated list. There will be an extra ":" but empty items are ignored.
|
|
"--unsupportedapi $$(printf ':%s' $(locations :connectivity-hiddenapi-files)) " +
|
|
"--excludes $(location jarjar-excludes.txt) " +
|
|
"--output $(out)",
|
|
visibility: [
|
|
"//packages/modules/Connectivity/framework:__subpackages__",
|
|
"//packages/modules/Connectivity/framework-t:__subpackages__",
|
|
"//packages/modules/Connectivity/service",
|
|
],
|
|
}
|
|
|
|
// Library providing limited APIs within the connectivity module, so that R+ components like
|
|
// Tethering have a controlled way to depend on newer components like framework-connectivity that
|
|
// are not loaded on R.
|
|
java_library {
|
|
name: "connectivity-internal-api-util",
|
|
sdk_version: "module_current",
|
|
libs: [
|
|
"androidx.annotation_annotation",
|
|
"framework-connectivity.impl",
|
|
],
|
|
jarjar_rules: ":framework-connectivity-jarjar-rules",
|
|
srcs: [
|
|
// Files listed here MUST all be annotated with @RequiresApi(Build.VERSION_CODES.TIRAMISU),
|
|
// so that API checks are enforced for R+ users of this library
|
|
"src/android/net/connectivity/TiramisuConnectivityInternalApiUtil.java",
|
|
],
|
|
visibility: [
|
|
"//packages/modules/Connectivity/Tethering:__subpackages__",
|
|
],
|
|
}
|