R8 emits "missing class" warnings when optimizing service-connectivity because service-connectivity combines several already built static_libs (service-connectivity, service-connectivity-t, service-nearby), but does not specify any classpath library, which are actually needed for R8. This causes wrong optimizations, where R8 would sometimes strip out code that it thinks is unused (because it considers it unreachable due to the missing class, or it does not know the superclass of a callback and thinks the overridden methods cannot be called). Add the necessary classpath libraries to remove the warnings. Bug: 226127213 Bug: 239990030 Test: m service-connectivity, see no "Missing class" warnings Change-Id: I1eaa39b70da4b540e3a3e8e798bec1359b5bf533
145 lines
5.5 KiB
Plaintext
145 lines
5.5 KiB
Plaintext
//
|
|
// 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"],
|
|
}
|
|
|
|
// 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",
|
|
],
|
|
stub_only_libs: [
|
|
// Use prebuilt framework-connectivity stubs to avoid circular dependencies
|
|
"sdk_module-lib_current_framework-connectivity",
|
|
],
|
|
libs: [
|
|
"unsupportedappusage",
|
|
"app-compat-annotations",
|
|
"sdk_module-lib_current_framework-connectivity",
|
|
],
|
|
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",
|
|
],
|
|
}
|
|
|
|
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",
|
|
],
|
|
// 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",
|
|
permitted_packages: [
|
|
"android.app.usage",
|
|
"android.net",
|
|
"android.net.nsd",
|
|
"android.nearby",
|
|
"com.android.connectivity",
|
|
"com.android.nearby",
|
|
],
|
|
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/Nearby/service",
|
|
"//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/Nearby/tests:__subpackages__",
|
|
"//packages/modules/Wifi/service/tests/wifitests",
|
|
],
|
|
}
|