Remove netlinkclient dependency on shared-srcs

Usage of shared-srcs should be avoided as including shared sources in
multiple build rules is inefficient and error-prone.

(clean cherry-pick of internal change)

Bug: 145146475
Test: m netlink-client FrameworksTelephonyTests
Merged-In: I57b2e470d5ec70bfc354d016555c0bbfb9ffdbe4
Change-Id: I57b2e470d5ec70bfc354d016555c0bbfb9ffdbe4
diff --git a/common/netlinkclient/Android.bp b/common/netlinkclient/Android.bp
index 32e6d56..a61cdbd 100644
--- a/common/netlinkclient/Android.bp
+++ b/common/netlinkclient/Android.bp
@@ -18,10 +18,10 @@
     name: "netlink-client",
     srcs: [
         "src/**/*.java",
-        ":framework-networkstack-shared-srcs",
+        ":framework-annotations",
     ],
     libs: [
         "androidx.annotation_annotation",
     ],
     sdk_version: "system_current",
-}
\ No newline at end of file
+}
diff --git a/common/netlinkclient/src/android/net/netlink/NetlinkConstants.java b/common/netlinkclient/src/android/net/netlink/NetlinkConstants.java
index fc1551c..181a361 100644
--- a/common/netlinkclient/src/android/net/netlink/NetlinkConstants.java
+++ b/common/netlinkclient/src/android/net/netlink/NetlinkConstants.java
@@ -17,7 +17,6 @@
 package android.net.netlink;
 
 import android.system.OsConstants;
-import com.android.internal.util.HexDump;
 
 import java.nio.ByteBuffer;
 
@@ -62,12 +61,12 @@
 
     public static String hexify(byte[] bytes) {
         if (bytes == null) { return "(null)"; }
-        return HexDump.toHexString(bytes);
+        return toHexString(bytes, 0, bytes.length);
     }
 
     public static String hexify(ByteBuffer buffer) {
         if (buffer == null) { return "(null)"; }
-        return HexDump.toHexString(
+        return toHexString(
                 buffer.array(), buffer.position(), buffer.remaining());
     }
 
@@ -126,4 +125,22 @@
                 return "unknown RTM type: " + String.valueOf(nlm_type);
         }
     }
+
+    private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+            'A', 'B', 'C', 'D', 'E', 'F' };
+    /**
+     * Convert a byte array to a hexadecimal string.
+     */
+    public static String toHexString(byte[] array, int offset, int length) {
+        char[] buf = new char[length * 2];
+
+        int bufIndex = 0;
+        for (int i = offset; i < offset + length; i++) {
+            byte b = array[i];
+            buf[bufIndex++] = HEX_DIGITS[(b >>> 4) & 0x0F];
+            buf[bufIndex++] = HEX_DIGITS[b & 0x0F];
+        }
+
+        return new String(buf);
+    }
 }