Reorganize connectivity framework dependencies
Allow framework-connectivity to depend on framework-connectivity-t stubs, and framework-connectivity-t to depend on prebuilt (to avoid circular dependencies) framework-connectivity stubs to compile its own stubs, and framework-connectivity.impl to compile its implementation. Also reorganize jarjar rules so that service and framework jar can use static libraries in framework-connectivity without packaging their own, reducing duplicate code. Bug: 204830222 Test: m Change-Id: I75c34986e7c479de23cdb2e9b360fa1fede018c9
This commit is contained in:
@@ -52,7 +52,7 @@ apex {
|
||||
first: {
|
||||
jni_libs: [
|
||||
"libservice-connectivity",
|
||||
"libcom_android_connectivity_com_android_net_module_util_jni",
|
||||
"libandroid_net_connectivity_com_android_net_module_util_jni",
|
||||
],
|
||||
native_shared_libs: ["libnetd_updatable"],
|
||||
},
|
||||
|
||||
@@ -26,12 +26,13 @@ java_defaults {
|
||||
// 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_sdk_library {
|
||||
name: "framework-connectivity-tiramisu",
|
||||
sdk_version: "module_current",
|
||||
min_sdk_version: "Tiramisu",
|
||||
jarjar_rules: "jarjar-rules.txt",
|
||||
defaults: [
|
||||
"framework-module-defaults",
|
||||
"enable-framework-connectivity-t-targets",
|
||||
@@ -40,13 +41,31 @@ java_sdk_library {
|
||||
":framework-connectivity-tiramisu-updatable-sources",
|
||||
":framework-nearby-java-sources",
|
||||
],
|
||||
static_libs: [
|
||||
"modules-utils-preconditions",
|
||||
// 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: ":connectivity-jarjar-rules",
|
||||
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",
|
||||
// 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",
|
||||
],
|
||||
permitted_packages: [
|
||||
"android.net",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
rule com.android.internal.util.** com.android.connectivity.tiramisu.@0
|
||||
@@ -55,12 +55,11 @@ filegroup {
|
||||
],
|
||||
}
|
||||
|
||||
java_sdk_library {
|
||||
name: "framework-connectivity",
|
||||
java_defaults {
|
||||
name: "framework-connectivity-defaults",
|
||||
defaults: ["framework-module-defaults"],
|
||||
sdk_version: "module_current",
|
||||
min_sdk_version: "30",
|
||||
defaults: ["framework-module-defaults"],
|
||||
installable: true,
|
||||
srcs: [
|
||||
":framework-connectivity-sources",
|
||||
":net-utils-framework-common-srcs",
|
||||
@@ -76,6 +75,9 @@ java_sdk_library {
|
||||
"frameworks/native/aidl/binder", // For PersistableBundle.aidl
|
||||
],
|
||||
},
|
||||
stub_only_libs: [
|
||||
"framework-connectivity-tiramisu.stubs.module_lib",
|
||||
],
|
||||
impl_only_libs: [
|
||||
"framework-tethering.stubs.module_lib",
|
||||
"framework-wifi.stubs.module_lib",
|
||||
@@ -83,16 +85,42 @@ java_sdk_library {
|
||||
],
|
||||
static_libs: [
|
||||
"modules-utils-build",
|
||||
"modules-utils-preconditions",
|
||||
],
|
||||
libs: [
|
||||
"framework-connectivity-tiramisu.stubs.module_lib",
|
||||
"unsupportedappusage",
|
||||
],
|
||||
jarjar_rules: "jarjar-rules.txt",
|
||||
apex_available: [
|
||||
"com.android.tethering",
|
||||
],
|
||||
lint: { strict_updatability_linting: true },
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "framework-connectivity-pre-jarjar",
|
||||
defaults: ["framework-connectivity-defaults"],
|
||||
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 stubs depend on the connectivity stubs (e.g.,
|
||||
// TetheringRequest depends on LinkAddress).
|
||||
"framework-tethering.stubs.module_lib",
|
||||
],
|
||||
visibility: ["//packages/modules/Connectivity:__subpackages__"]
|
||||
}
|
||||
|
||||
java_sdk_library {
|
||||
name: "framework-connectivity",
|
||||
defaults: ["framework-connectivity-defaults"],
|
||||
installable: true,
|
||||
jarjar_rules: ":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",
|
||||
@@ -111,10 +139,6 @@ java_sdk_library {
|
||||
"//packages/modules/NetworkStack/tests:__subpackages__",
|
||||
"//packages/modules/Wifi/service/tests/wifitests",
|
||||
],
|
||||
apex_available: [
|
||||
"com.android.tethering",
|
||||
],
|
||||
lint: { strict_updatability_linting: true },
|
||||
}
|
||||
|
||||
cc_library_shared {
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
rule com.android.net.module.util.** android.net.connectivity.framework.util.@1
|
||||
rule com.android.modules.utils.** android.net.connectivity.framework.modules.utils.@1
|
||||
rule android.net.NetworkFactory* android.net.connectivity.framework.NetworkFactory@1
|
||||
@@ -36,15 +36,17 @@ java_library {
|
||||
],
|
||||
libs: [
|
||||
"framework-annotations-lib",
|
||||
"framework-connectivity.impl",
|
||||
"framework-connectivity-pre-jarjar",
|
||||
"framework-connectivity-tiramisu.impl",
|
||||
"service-connectivity-pre-jarjar",
|
||||
"unsupportedappusage",
|
||||
],
|
||||
static_libs: [
|
||||
"modules-utils-build",
|
||||
// Do not add static_libs here if they are already included in framework-connectivity
|
||||
// or in service-connectivity. They are not necessary (included via
|
||||
// service-connectivity-pre-jarjar), and in the case of code that is already in
|
||||
// framework-connectivity, the classes would be included in the apex twice.
|
||||
"modules-utils-statemachine",
|
||||
"net-utils-framework-common",
|
||||
],
|
||||
apex_available: [
|
||||
"com.android.tethering",
|
||||
|
||||
@@ -20,9 +20,9 @@ package {
|
||||
}
|
||||
|
||||
// The library name match the service-connectivity jarjar rules that put the JNI utils in the
|
||||
// com.android.connectivity.com.android.net.module.util package.
|
||||
// android.net.connectivity.com.android.net.module.util package.
|
||||
cc_library_shared {
|
||||
name: "libcom_android_connectivity_com_android_net_module_util_jni",
|
||||
name: "libandroid_net_connectivity_com_android_net_module_util_jni",
|
||||
min_sdk_version: "30",
|
||||
cflags: [
|
||||
"-Wall",
|
||||
@@ -98,20 +98,20 @@ java_library {
|
||||
],
|
||||
libs: [
|
||||
"framework-annotations-lib",
|
||||
"framework-connectivity.impl",
|
||||
"framework-connectivity-pre-jarjar",
|
||||
"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
|
||||
"dnsresolver_aidl_interface-V9-java",
|
||||
"modules-utils-build",
|
||||
"modules-utils-shell-command-handler",
|
||||
"net-utils-device-common",
|
||||
"net-utils-device-common-bpf",
|
||||
"net-utils-device-common-netlink",
|
||||
"net-utils-framework-common",
|
||||
"netd-client",
|
||||
"networkstack-client",
|
||||
"PlatformProperties",
|
||||
@@ -159,7 +159,7 @@ java_library {
|
||||
"service-connectivity-tiramisu-pre-jarjar",
|
||||
"service-nearby",
|
||||
],
|
||||
jarjar_rules: "jarjar-rules.txt",
|
||||
jarjar_rules: ":connectivity-jarjar-rules",
|
||||
apex_available: [
|
||||
"com.android.tethering",
|
||||
],
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
# Classes in framework-connectivity are restricted to the android.net package.
|
||||
# This cannot be changed because it is harcoded in ART in S.
|
||||
# Any missing jarjar rule for framework-connectivity would be caught by the
|
||||
# build as an unexpected class outside of the android.net package.
|
||||
rule com.android.net.module.util.** android.net.connectivity.@0
|
||||
rule com.android.modules.utils.** android.net.connectivity.@0
|
||||
rule android.net.NetworkFactory* android.net.connectivity.@0
|
||||
|
||||
# From modules-utils-preconditions
|
||||
rule com.android.internal.util.Preconditions* android.net.connectivity.@0
|
||||
|
||||
rule android.sysprop.** com.android.connectivity.@0
|
||||
rule com.android.net.module.util.** com.android.connectivity.@0
|
||||
rule com.android.modules.utils.** com.android.connectivity.@0
|
||||
|
||||
# internal util classes from framework-connectivity-shared-srcs
|
||||
rule android.util.LocalLog* com.android.connectivity.@0
|
||||
@@ -23,9 +32,6 @@ rule android.net.ResolverParamsParcel* com.android.connectivity.@0
|
||||
rule android.net.ResolverParamsParcel* com.android.connectivity.@0
|
||||
# Also includes netd event listener AIDL, but this is handled by netd-client rules
|
||||
|
||||
# From net-utils-device-common
|
||||
rule android.net.NetworkFactory* com.android.connectivity.@0
|
||||
|
||||
# From netd-client (newer AIDLs should go to android.net.netd.aidl)
|
||||
rule android.net.netd.aidl.** com.android.connectivity.@0
|
||||
# Avoid including android.net.INetdEventCallback, used in tests but not part of the module
|
||||
|
||||
@@ -30,10 +30,10 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void*) {
|
||||
}
|
||||
|
||||
if (register_com_android_net_module_util_BpfMap(env,
|
||||
"com/android/connectivity/com/android/net/module/util/BpfMap") < 0) return JNI_ERR;
|
||||
"android/net/connectivity/com/android/net/module/util/BpfMap") < 0) return JNI_ERR;
|
||||
|
||||
if (register_com_android_net_module_util_TcUtils(env,
|
||||
"com/android/connectivity/com/android/net/module/util/TcUtils") < 0) return JNI_ERR;
|
||||
"android/net/connectivity/com/android/net/module/util/TcUtils") < 0) return JNI_ERR;
|
||||
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ android_test {
|
||||
// android_library does not include JNI libs: include NetworkStack dependencies here
|
||||
"libnativehelper_compat_libc++",
|
||||
"libnetworkstackutilsjni",
|
||||
"libcom_android_connectivity_com_android_net_module_util_jni",
|
||||
"libandroid_net_connectivity_com_android_net_module_util_jni",
|
||||
],
|
||||
jarjar_rules: ":connectivity-jarjar-rules",
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user