Use dlopen() and dlsym() for resolver functions

This is a workaround to allow us to use libnetd_resolv.so from
the resolver APEX before b/120661824 is fixed.

Test: builds, boots
Test: system/netd/tests/runtests.sh
Test: atest FrameworksNetTests android.net.cts.ConnectivityManagerTest
Change-Id: I752ae248bb59545b0a4fbc1a7b8c9bcd697a31d4
diff --git a/server/Android.bp b/server/Android.bp
index 1fcb7ee..a4beb2c 100644
--- a/server/Android.bp
+++ b/server/Android.bp
@@ -75,7 +75,6 @@
     ],
     shared_libs: [
         "libbpf_android",
-        "libnetd_resolv",
         "libbase",
         "libbinder",
         "liblogwrap",
@@ -88,6 +87,9 @@
         "netd_aidl_interface-cpp",
         "netd_event_listener_interface-cpp",
     ],
+    header_libs: [
+        "libnetd_resolv_headers",
+    ],
     aidl: {
         export_aidl_headers: true,
         local_include_dirs: ["binder"],
@@ -116,7 +118,6 @@
         "liblog",
         "liblogwrap",
         "libmdnssd",
-        "libnetd_resolv",
         "libnetdbpf",
         "libnetdutils",
         "libnetutils",
@@ -131,6 +132,9 @@
     static_libs: [
         "libnetd_server",
     ],
+    header_libs: [
+        "libnetd_resolv_headers",
+    ],
     srcs: [
         "ClatdController.cpp",
         "CommandListener.cpp",
@@ -150,6 +154,7 @@
         "PhysicalNetwork.cpp",
         "PppController.cpp",
         "Process.cpp",
+        "ResolvStub.cpp",
         "ResolverController.cpp",
         "VirtualNetwork.cpp",
         "main.cpp",