diff options
author | Remi NGUYEN VAN <reminv@google.com> | 2020-10-23 17:57:31 +0900 |
---|---|---|
committer | Remi NGUYEN VAN <reminv@google.com> | 2021-01-07 11:52:42 +0900 |
commit | dbbf7a3b4ed097eff86e973c569d1d619798b27c (patch) | |
tree | c266c204c1385d39e0d70dea691b5bc250a1c6eb | |
parent | 26dbdc853b3cb754ca28045989c4f76e35820ba8 (diff) |
Move service-connectivity to the tethering APEX
As part of modularization of ConnectivityService and expansion of the
Tethering module scope, move service-connectivity.jar into the tethering
APEX, and load it from there.
Bug: 171540887
Test: m, device boots and connectivity
Change-Id: Id7b6a4664ae73224b9ab219c94f56d603a62ee5a
-rw-r--r-- | packages/Connectivity/service/Android.bp | 24 | ||||
-rw-r--r-- | services/Android.bp | 1 | ||||
-rw-r--r-- | services/core/java/com/android/server/ConnectivityServiceInitializer.java | 2 | ||||
-rw-r--r-- | services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java | 2 | ||||
-rw-r--r-- | services/core/jni/Android.bp | 1 | ||||
-rw-r--r-- | services/core/jni/onload.cpp | 4 | ||||
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 9 | ||||
-rw-r--r-- | tests/net/Android.bp | 3 |
8 files changed, 18 insertions, 28 deletions
diff --git a/packages/Connectivity/service/Android.bp b/packages/Connectivity/service/Android.bp index a26f715280a1..c8f3bd3666e4 100644 --- a/packages/Connectivity/service/Android.bp +++ b/packages/Connectivity/service/Android.bp @@ -14,8 +14,8 @@ // limitations under the License. // -cc_defaults { - name: "libservice-connectivity-defaults", +cc_library_shared { + name: "libservice-connectivity", // TODO: build against the NDK (sdk_version: "30" for example) cflags: [ "-Wall", @@ -26,6 +26,7 @@ cc_defaults { srcs: [ "jni/com_android_server_TestNetworkService.cpp", "jni/com_android_server_connectivity_Vpn.cpp", + "jni/onload.cpp", ], shared_libs: [ "libbase", @@ -35,27 +36,11 @@ cc_defaults { // addresses, and remove dependency on libnetutils. "libnetutils", ], -} - -cc_library_shared { - name: "libservice-connectivity", - defaults: ["libservice-connectivity-defaults"], - srcs: [ - "jni/onload.cpp", - ], apex_available: [ - // TODO: move this library to the tethering APEX and remove libservice-connectivity-static - // "com.android.tethering", + "com.android.tethering", ], } -// Static library linked into libservices.core until libservice-connectivity can be loaded from -// the tethering APEX instead. -cc_library_static { - name: "libservice-connectivity-static", - defaults: ["libservice-connectivity-defaults"], -} - java_library { name: "service-connectivity", srcs: [ @@ -75,5 +60,6 @@ java_library { ], apex_available: [ "//apex_available:platform", + "com.android.tethering", ], } diff --git a/services/Android.bp b/services/Android.bp index f40f7cfa7321..ef52c2aff002 100644 --- a/services/Android.bp +++ b/services/Android.bp @@ -83,7 +83,6 @@ java_library { "services.voiceinteraction", "services.wifi", "service-blobstore", - "service-connectivity", "service-jobscheduler", "android.hidl.base-V1.0-java", ], diff --git a/services/core/java/com/android/server/ConnectivityServiceInitializer.java b/services/core/java/com/android/server/ConnectivityServiceInitializer.java index 2bc8925be019..f276329d394b 100644 --- a/services/core/java/com/android/server/ConnectivityServiceInitializer.java +++ b/services/core/java/com/android/server/ConnectivityServiceInitializer.java @@ -36,6 +36,8 @@ public final class ConnectivityServiceInitializer extends SystemService { public ConnectivityServiceInitializer(Context context) { super(context); + // Load JNI libraries used by ConnectivityService and its dependencies + System.loadLibrary("service-connectivity"); // TODO: Define formal APIs to get the needed services. mConnectivity = new ConnectivityService(context, getNetworkManagementService(), getNetworkStatsService(), getNetworkPolicyManager()); diff --git a/services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java b/services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java index 2c06d8230f13..b5d875d5c162 100644 --- a/services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java +++ b/services/core/java/com/android/server/connectivity/IpConnectivityMetrics.java @@ -122,6 +122,8 @@ final public class IpConnectivityMetrics extends SystemService { public IpConnectivityMetrics(Context ctx, ToIntFunction<Context> capacityGetter) { super(ctx); + // Load JNI libraries used by the IpConnectivityMetrics service and its dependencies + System.loadLibrary("service-connectivity"); mCapacityGetter = capacityGetter; initBuffer(); } diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index 4f95696dce88..e0db93a01efd 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -168,7 +168,6 @@ cc_defaults { static_libs: [ "android.hardware.broadcastradio@common-utils-1x-lib", - "libservice-connectivity-static", ], product_variables: { diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp index 8cb3e6d1ae73..ccf685c1abd7 100644 --- a/services/core/jni/onload.cpp +++ b/services/core/jni/onload.cpp @@ -40,8 +40,6 @@ int register_android_server_UsbHostManager(JNIEnv* env); int register_android_server_vr_VrManagerService(JNIEnv* env); int register_android_server_VibratorService(JNIEnv* env); int register_android_server_location_GnssLocationProvider(JNIEnv* env); -int register_android_server_connectivity_Vpn(JNIEnv* env); -int register_android_server_TestNetworkService(JNIEnv* env); int register_android_server_devicepolicy_CryptoTestHelper(JNIEnv*); int register_android_server_tv_TvUinputBridge(JNIEnv* env); int register_android_server_tv_TvInputHal(JNIEnv* env); @@ -93,8 +91,6 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) register_android_server_VibratorService(env); register_android_server_SystemServer(env); register_android_server_location_GnssLocationProvider(env); - register_android_server_connectivity_Vpn(env); - register_android_server_TestNetworkService(env); register_android_server_devicepolicy_CryptoTestHelper(env); register_android_server_ConsumerIrService(env); register_android_server_BatteryStatsService(env); diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index b5c5bb52d050..d55a5b7792d4 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -221,6 +221,8 @@ public final class SystemServer { "com.android.server.companion.CompanionDeviceManagerService"; private static final String STATS_COMPANION_APEX_PATH = "/apex/com.android.os.statsd/javalib/service-statsd.jar"; + private static final String CONNECTIVITY_SERVICE_APEX_PATH = + "/apex/com.android.tethering/javalib/service-connectivity.jar"; private static final String STATS_COMPANION_LIFECYCLE_CLASS = "com.android.server.stats.StatsCompanion$Lifecycle"; private static final String STATS_PULL_ATOM_SERVICE_CLASS = @@ -1217,7 +1219,8 @@ public final class SystemServer { } t.traceBegin("IpConnectivityMetrics"); - mSystemServiceManager.startService(IP_CONNECTIVITY_METRICS_CLASS); + mSystemServiceManager.startServiceFromJar(IP_CONNECTIVITY_METRICS_CLASS, + CONNECTIVITY_SERVICE_APEX_PATH); t.traceEnd(); t.traceBegin("NetworkWatchlistService"); @@ -1558,8 +1561,8 @@ public final class SystemServer { // This has to be called after NetworkManagementService, NetworkStatsService // and NetworkPolicyManager because ConnectivityService needs to take these // services to initialize. - // TODO: Dynamically load service-connectivity.jar by using startServiceFromJar. - mSystemServiceManager.startService(CONNECTIVITY_SERVICE_INITIALIZER_CLASS); + mSystemServiceManager.startServiceFromJar(CONNECTIVITY_SERVICE_INITIALIZER_CLASS, + CONNECTIVITY_SERVICE_APEX_PATH); connectivity = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); // TODO: Use ConnectivityManager instead of ConnectivityService. diff --git a/tests/net/Android.bp b/tests/net/Android.bp index a7622198cec7..f6a2846c9b3c 100644 --- a/tests/net/Android.bp +++ b/tests/net/Android.bp @@ -70,4 +70,7 @@ android_test { "android.test.base", "android.test.mock", ], + jni_libs: [ + "libservice-connectivity", + ], } |