android_packages_modules_Co.../framework-t/Android.bp
Remi NGUYEN VAN 27ad67e3f6 Do not build remoteauth in udc branches
Remotauth is not compatible with U, so building it in udc-based branches
is not necessary, and it would be hard to backport dependencies as
needed.

This change causes fallback sources to be built instead of
remoteauth/service and remoteauth/framework: stubs should only be needed
for entry points into the module, so the stubs should not need to be
modified often.

The remoteauth sources are still used for generating the API (as per
api_srcs in framework-connectivity-t), to avoid merge conflicts in the
API .txt files. But the implementation jar actually used on device or
shipped via module updates does not contain the API classes. In practice
this means that API stubs are generated through metalava from the
remoteauth sources, and these need to be built. So the API surface
itself cannot depend on V+ classes (APIs cannot take V+ classes as
arguments or return them). This is the case anyway, as
framework-connectivity-t is on the bootclasspath on T+; and in general,
module bootclasspath jars need to avoid depending on newer framework
classes as they may not exist on older devices using the module.

This change should only go to udc branches; note the merged-in below
refers to a change that was merged in all relevant branches, to ensure
that this change is not automerged anywhere.

Bug: 295788084
Test: m
Merged-In: I850242640f32bea3d46febcde5f3719619b1ea07
Change-Id: If533fef926ea0ad4e1e0b4d60c8f8e60f363fc1b
2023-09-05 15:22:06 +09:00

195 lines
7.1 KiB
Text

//
// Copyright (C) 2021 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"],
}
framework_remoteauth_srcs = [":framework-remoteauth-java-sources-udc-compat"]
framework_remoteauth_api_srcs = [":framework-remoteauth-java-sources"]
java_defaults {
name: "enable-remoteauth-targets",
enabled: false,
}
// Include build rules from Sources.bp
build = ["Sources.bp"]
java_defaults {
name: "enable-framework-connectivity-t-targets",
enabled: true,
}
// The above defaults can be used to disable framework-connectivity t
// targets while minimizing merge conflicts in the build rules.
// SDK library for connectivity bootclasspath classes that were part of the non-updatable API before
// T, and were moved to the module in T. Other bootclasspath classes in connectivity should go to
// framework-connectivity.
java_defaults {
name: "framework-connectivity-t-defaults",
sdk_version: "module_current",
min_sdk_version: "Tiramisu",
defaults: [
"framework-module-defaults",
],
srcs: [
":framework-connectivity-tiramisu-updatable-sources",
":framework-nearby-java-sources",
":framework-thread-sources",
] + framework_remoteauth_srcs,
libs: [
"unsupportedappusage",
"app-compat-annotations",
"androidx.annotation_annotation",
],
impl_only_libs: [
// The build system will use framework-bluetooth module_current stubs, because
// of sdk_version: "module_current" above.
"framework-bluetooth",
"framework-wifi",
// Compile against the entire implementation of framework-connectivity,
// including hidden methods. This is safe because if framework-connectivity-t is
// on the bootclasspath (i.e., T), then framework-connectivity is also on the
// bootclasspath (because it shipped in S).
//
// This compiles against the pre-jarjar target so that this code can use
// non-jarjard names of widely-used packages such as com.android.net.module.util.
"framework-connectivity-pre-jarjar",
],
aidl: {
generate_get_transaction_name: true,
include_dirs: [
// For connectivity-framework classes such as Network.aidl,
// and connectivity-framework-t classes such as
// NetworkStateSnapshot.aidl
"packages/modules/Connectivity/framework/aidl-export",
],
},
apex_available: [
"com.android.tethering",
],
}
filegroup {
name: "connectivity-t-hiddenapi-files",
srcs: ["hiddenapi/*.txt"],
visibility: ["//packages/modules/Connectivity:__subpackages__"],
}
// The filegroup lists files that are necessary for verifying building mdns as a standalone,
// for use with service-connectivity-mdns-standalone-build-test
filegroup {
name: "framework-connectivity-t-mdns-standalone-build-sources",
srcs: [
"src/android/net/nsd/OffloadEngine.java",
"src/android/net/nsd/OffloadServiceInfo.java",
],
visibility: ["//packages/modules/Connectivity:__subpackages__"],
}
java_library {
name: "framework-connectivity-t-pre-jarjar",
defaults: ["framework-connectivity-t-defaults"],
libs: [
"framework-bluetooth",
"framework-wifi",
"framework-connectivity-pre-jarjar",
],
visibility: ["//packages/modules/Connectivity:__subpackages__"],
}
// SDK library for connectivity bootclasspath classes that were part of the non-updatable API before
// T, and were moved to the module in T. Other bootclasspath classes in connectivity should go to
// framework-connectivity.
java_sdk_library {
name: "framework-connectivity-t",
defaults: [
"framework-connectivity-t-defaults",
"enable-framework-connectivity-t-targets",
],
api_srcs: framework_remoteauth_api_srcs,
// Do not add static_libs to this library: put them in framework-connectivity instead.
// The jarjar rules are only so that references to jarjared utils in
// framework-connectivity-pre-jarjar match at runtime.
jarjar_rules: ":framework-connectivity-jarjar-rules",
stub_only_libs: [
// Use prebuilt framework-connectivity stubs to avoid circular dependencies
"sdk_module-lib_current_framework-connectivity",
],
libs: [
"sdk_module-lib_current_framework-connectivity",
],
permitted_packages: [
"android.app.usage",
"android.net",
"android.net.nsd",
"android.nearby",
"android.remoteauth",
"com.android.connectivity",
"com.android.nearby",
"com.android.remoteauth",
],
hidden_api: {
max_target_o_low_priority: [
"hiddenapi/hiddenapi-max-target-o-low-priority-tiramisu.txt",
],
max_target_r_low_priority: [
"hiddenapi/hiddenapi-max-target-r-loprio.txt",
],
unsupported: [
"hiddenapi/hiddenapi-unsupported-tiramisu.txt",
],
},
impl_library_visibility: [
"//packages/modules/Connectivity/Tethering/apex",
// In preparation for future move
"//packages/modules/Connectivity/apex",
"//packages/modules/Connectivity/service", // For R8 only
"//packages/modules/Connectivity/service-t",
"//packages/modules/Connectivity/nearby:__subpackages__",
"//packages/modules/Connectivity/remoteauth:__subpackages__",
"//frameworks/base",
// Tests using hidden APIs
"//cts/tests/netlegacy22.api",
"//cts/tests/tests/app.usage", // NetworkUsageStatsTest
"//external/sl4a:__subpackages__",
"//frameworks/base/core/tests/bandwidthtests",
"//frameworks/base/core/tests/benchmarks",
"//frameworks/base/core/tests/utillib",
"//frameworks/base/tests/vcn",
"//frameworks/libs/net/common/testutils",
"//frameworks/libs/net/common/tests:__subpackages__",
"//frameworks/opt/net/ethernet/tests:__subpackages__",
"//frameworks/opt/telephony/tests/telephonytests",
"//packages/modules/CaptivePortalLogin/tests",
"//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",
],
}
// This rule is not used anymore(b/268440216).
platform_compat_config {
name: "connectivity-t-platform-compat-config",
src: ":framework-connectivity-t",
}