Create a android_library with all necessary dependencies

Bug: 270954160
Test: atest DeviceLockControllerRoboTests

Change-Id: I7fcbe03de40255b1ae12cd64b8fe1adc9d200016
diff --git a/DeviceLockController/Android.bp b/DeviceLockController/Android.bp
index 41b23a6..39639c0 100644
--- a/DeviceLockController/Android.bp
+++ b/DeviceLockController/Android.bp
@@ -32,18 +32,6 @@
 }
 
 filegroup {
-    name: "devicelockcontroller-sources",
-    srcs: [
-        "src/**/*.java",
-    ],
-    exclude_srcs: [
-        "src/com/android/devicelockcontroller/activities/*.java",
-        "src/com/android/devicelockcontroller/util/*.java",
-        "src/com/android/devicelockcontroller/provision/grpc/*.java",
-    ],
-}
-
-filegroup {
     name: "devicelockcontroller-activities-sources",
     srcs: [
         "src/com/android/devicelockcontroller/activities/*.java",
@@ -58,19 +46,38 @@
 }
 
 filegroup {
-    name: "devicelockcontroller-grpc-sources",
+    name: "devicelockcontroller-grpc-interface-sources",
     srcs: [
         "src/com/android/devicelockcontroller/provision/grpc/*.java",
     ],
 }
 
 filegroup {
+    name: "devicelockcontroller-grpc-impl-sources",
+    srcs: [
+        "src/com/android/devicelockcontroller/provision/grpc/impl/*.java",
+    ],
+}
+
+filegroup {
     name: "devicelockcontroller-aidl",
     srcs: [
         "src/**/*.aidl",
     ],
 }
 
+filegroup {
+    name: "devicelockcontroller-sources",
+    srcs: [
+        "src/**/*.java",
+    ],
+    exclude_srcs: [
+        ":devicelockcontroller-activities-sources",
+        ":devicelockcontroller-util-sources",
+        ":devicelockcontroller-grpc-impl-sources",
+    ],
+}
+
 android_library {
     name: "devicelockcontroller-res-lib",
     sdk_version: "module_current",
@@ -147,9 +154,9 @@
 }
 
 java_library {
-    name: "devicelockcontroller-grpc-lib",
+    name: "devicelockcontroller-grpc-interface-lib",
     srcs: [
-        ":devicelockcontroller-grpc-sources",
+        ":devicelockcontroller-grpc-interface-sources",
     ],
     sdk_version: "module_current",
     min_sdk_version: "UpsideDownCake",
@@ -163,28 +170,29 @@
         "opencensus-java-api",
         "opencensus-java-contrib-grpc-metrics",
     ],
+    visibility: [
+        "//packages/modules/DeviceLock:__subpackages__",
+        "//vendor:__subpackages__",
+    ],
 }
 
-android_app {
-    name: "DeviceLockController",
+// Library with all dependencies for building DeviceLockController
+android_library {
+    name: "devicelockcontroller-lib",
     sdk_version: "module_current",
     min_sdk_version: "UpsideDownCake",
-    updatable: true,
-    privileged: true,
-    certificate: "platform",
-    rename_resources_package: false,
-    required: ["privapp_allowlist_com.android.devicelockcontroller.xml"],
-
     srcs: [":devicelockcontroller-sources"],
-
+    libs: [
+        "framework-tethering",
+        "org.apache.http.legacy",
+    ],
     static_libs: [
         "androidx.annotation_annotation",
         "androidx.collection_collection",
         "androidx.lifecycle_lifecycle-extensions",
         "androidx.work_work-runtime",
         "devicelockcontroller-activities-lib",
-        "devicelockcontroller-grpc-lib",
-        "devicelockcontroller-proto-lite",
+        "devicelockcontroller-grpc-interface-lib",
         "devicelockcontroller-interface",
         "devicelockcontroller-res-lib",
         "devicelockcontroller-util-lib",
@@ -210,9 +218,31 @@
         "jsr330",
         "dagger2",
     ],
+    apex_available: [
+        "com.android.devicelock",
+    ],
+    visibility: [
+        "//packages/modules/DeviceLock:__subpackages__",
+        "//vendor:__subpackages__",
+    ],
+}
 
-    libs: [
-        "framework-tethering",
+android_app {
+    name: "DeviceLockController",
+    sdk_version: "module_current",
+    min_sdk_version: "UpsideDownCake",
+    updatable: true,
+    privileged: true,
+    certificate: "platform",
+    rename_resources_package: false,
+    required: ["privapp_allowlist_com.android.devicelockcontroller.xml"],
+
+    srcs: [":devicelockcontroller-grpc-impl-sources"],
+
+    static_libs: [
+        "devicelockcontroller-lib",
+        "devicelockcontroller-grpc-interface-lib",
+        "devicelockcontroller-proto-lite",
     ],
 
     lint: {
diff --git a/DeviceLockController/src/com/android/devicelockcontroller/provision/grpc/DeviceCheckInClient.java b/DeviceLockController/src/com/android/devicelockcontroller/provision/grpc/DeviceCheckInClient.java
index 7ec7da8..c069172 100644
--- a/DeviceLockController/src/com/android/devicelockcontroller/provision/grpc/DeviceCheckInClient.java
+++ b/DeviceLockController/src/com/android/devicelockcontroller/provision/grpc/DeviceCheckInClient.java
@@ -16,7 +16,6 @@
 
 package com.android.devicelockcontroller.provision.grpc;
 
-import android.content.Context;
 import android.util.ArraySet;
 
 import androidx.annotation.Nullable;
@@ -49,7 +48,7 @@
         try {
             Class<?> clazz = Class.forName(className);
             return (DeviceCheckInClient) clazz.getDeclaredConstructor(
-                            Context.class, String.class)
+                            String.class, Integer.TYPE, String.class)
                     .newInstance(hostName, portNumber, registeredId);
         } catch (Exception e) {
             throw new RuntimeException("Failed to get DeviceCheckInClient instance", e);
diff --git a/DeviceLockController/src/com/android/devicelockcontroller/provision/grpc/impl/DeviceCheckInClientImpl.java b/DeviceLockController/src/com/android/devicelockcontroller/provision/grpc/impl/DeviceCheckInClientImpl.java
index 8690576..b47f33e 100644
--- a/DeviceLockController/src/com/android/devicelockcontroller/provision/grpc/impl/DeviceCheckInClientImpl.java
+++ b/DeviceLockController/src/com/android/devicelockcontroller/provision/grpc/impl/DeviceCheckInClientImpl.java
@@ -18,6 +18,8 @@
 
 import android.util.ArraySet;
 
+import androidx.annotation.Keep;
+
 import com.android.devicelockcontroller.common.DeviceId;
 import com.android.devicelockcontroller.common.DeviceLockConstants;
 import com.android.devicelockcontroller.proto.ClientDeviceIdentifier;
@@ -42,10 +44,11 @@
  * A client for the {@link  com.android.devicelockcontroller.proto.DeviceLockCheckinServiceGrpc}
  * service.
  */
-final class DeviceCheckInClientImpl extends DeviceCheckInClient {
+@Keep
+public final class DeviceCheckInClientImpl extends DeviceCheckInClient {
     private final DeviceLockCheckinServiceBlockingStub mBlockingStub;
 
-    DeviceCheckInClientImpl(String hostName, int portNumber, @Nullable String registeredId) {
+    public DeviceCheckInClientImpl(String hostName, int portNumber, @Nullable String registeredId) {
         super(hostName, portNumber, registeredId);
         mBlockingStub = DeviceLockCheckinServiceGrpc.newBlockingStub(
                 OkHttpChannelBuilder