diff --git a/Android.bp b/Android.bp
index 2e71c75..ba2e424 100644
--- a/Android.bp
+++ b/Android.bp
@@ -14,6 +14,26 @@
 // limitations under the License.
 //
 
+// The network stack can be compiled using system_current (non-finalized) SDK, or finalized system_X
+// SDK. There is also a variant that uses system_current SDK and runs in the system process
+// (InProcessNetworkStack). The following structure is used to create the build rules:
+//
+//                          NetworkStackAndroidLibraryDefaults <-- common defaults for android libs
+//                                     /           \
+//    +NetworkStackApiStableShims --> /             \ <-- +NetworkStackApiCurrentShims
+//    +NetworkStackApiStableLevel    /               \    +NetworkStackApiCurrentLevel
+//                                  /                 \
+//           NetworkStackApiStableLib         NetworkStackApiCurrentLib <-- android libs w/ all code
+//                     |                                     |             (also used in unit tests)
+//                     | <--   +NetworkStackAppDefaults  --> |
+//                     |          (APK build params)         |
+//                     |                                     |
+//                     | <-- +NetworkStackApiStableLevel     | <-- +NetworkStackApiCurrentLevel
+//                     |                                     |
+//                     |                                     |
+//           NetworkStackApiStable          NetworkStack, InProcessNetworkStack, <-- output APKs
+//                                                    TestNetworkStack
+
 java_library {
     name: "captiveportal-lib",
     srcs: ["common/**/*.java"],
@@ -23,16 +43,38 @@
     sdk_version: "system_current",
 }
 
+// Common defaults to define SDK level
 java_defaults {
-    name: "NetworkStackCommon",
+    name: "NetworkStackApiCurrentLevel",
     sdk_version: "system_current",
     min_sdk_version: "28",
 }
 
-// Library including the network stack, used to compile both variants of the network stack
-android_library {
-    name: "NetworkStackBase",
-    defaults: ["NetworkStackCommon"],
+java_defaults {
+    name: "NetworkStackApiStableLevel",
+    sdk_version: "system_current", // TODO: change to system_29
+    min_sdk_version: "28",
+}
+
+// Java libraries for the API shims
+filegroup {
+    name: "NetworkStackApiCurrentShims",
+    srcs: [
+        "apishim/current/**/*.java"
+    ],
+}
+
+filegroup {
+    name: "NetworkStackApiStableShims",
+    srcs: [
+        "apishim/29/**/*.java"
+    ],
+}
+
+// Common defaults for android libraries containing network stack code, used to compile variants of
+// the network stack in the system process and in the network_stack process
+java_defaults {
+    name: "NetworkStackAndroidLibraryDefaults",
     srcs: [
         "src/**/*.java",
         ":framework-networkstack-shared-srcs",
@@ -51,6 +93,85 @@
     manifest: "AndroidManifestBase.xml",
 }
 
+// The versions of the android library containing network stack code compiled for each SDK variant
+android_library {
+    name: "NetworkStackApiCurrentLib",
+    defaults: ["NetworkStackApiCurrentLevel", "NetworkStackAndroidLibraryDefaults"],
+    srcs: [
+        ":NetworkStackApiCurrentShims",
+    ],
+}
+
+android_library {
+    name: "NetworkStackApiStableLib",
+    defaults: ["NetworkStackApiStableLevel", "NetworkStackAndroidLibraryDefaults"],
+    srcs: [
+        ":NetworkStackApiStableShims",
+    ],
+}
+
+// Common defaults for compiling the actual APK, based on the NetworkStackApiXBase android libraries
+java_defaults {
+    name: "NetworkStackAppDefaults",
+    privileged: true,
+    jni_libs: [
+        "libnativehelper_compat_libc++",
+        "libnetworkstackutilsjni",
+    ],
+    // Resources already included in NetworkStackBase
+    resource_dirs: [],
+    jarjar_rules: "jarjar-rules-shared.txt",
+    use_embedded_native_libs: true,
+    optimize: {
+        proguard_flags_files: ["proguard.flags"],
+    },
+}
+
+// Non-updatable network stack running in the system server process for devices not using the module
+android_app {
+    name: "InProcessNetworkStack",
+    defaults: [ "NetworkStackAppDefaults", "NetworkStackApiCurrentLevel"],
+    static_libs: ["NetworkStackApiCurrentLib"],
+    certificate: "platform",
+    manifest: "AndroidManifest_InProcess.xml",
+    // InProcessNetworkStack is a replacement for NetworkStack
+    overrides: ["NetworkStack"],
+    // The permission configuration *must* be included to ensure security of the device
+    // The InProcessNetworkStack goes together with the PlatformCaptivePortalLogin, which replaces
+    // the default CaptivePortalLogin.
+    required: ["PlatformNetworkPermissionConfig", "PlatformCaptivePortalLogin"],
+}
+
+// Updatable network stack packaged as an application
+android_app {
+    name: "NetworkStack",
+    defaults: ["NetworkStackAppDefaults", "NetworkStackApiCurrentLevel"],
+    static_libs: ["NetworkStackApiCurrentLib"],
+    certificate: "networkstack",
+    manifest: "AndroidManifest.xml",
+    // The permission configuration *must* be included to ensure security of the device
+    required: ["NetworkPermissionConfig"],
+}
+
+// Updatable network stack for finalized API
+android_app {
+    name: "NetworkStackApiStable",
+    defaults: ["NetworkStackAppDefaults", "NetworkStackApiStableLevel"],
+    static_libs: ["NetworkStackApiStableLib"],
+    certificate: "networkstack",
+    manifest: "AndroidManifest.xml",
+    // The permission configuration *must* be included to ensure security of the device
+    required: ["NetworkPermissionConfig"],
+}
+
+// Android library to derive test APKs for integration tests
+android_library {
+    name: "TestNetworkStackLib",
+    defaults: ["NetworkStackAppDefaults", "NetworkStackApiCurrentLevel"],
+    static_libs: ["NetworkStackApiCurrentLib"],
+    manifest: "AndroidManifest.xml",
+}
+
 cc_library_shared {
     name: "libnetworkstackutilsjni",
     srcs: [
@@ -81,56 +202,6 @@
     ],
 }
 
-java_defaults {
-    name: "NetworkStackAppCommon",
-    defaults: ["NetworkStackCommon"],
-    privileged: true,
-    static_libs: [
-        "NetworkStackBase",
-    ],
-    jni_libs: [
-        "libnativehelper_compat_libc++",
-        "libnetworkstackutilsjni",
-    ],
-    // Resources already included in NetworkStackBase
-    resource_dirs: [],
-    jarjar_rules: "jarjar-rules-shared.txt",
-    optimize: {
-        proguard_flags_files: ["proguard.flags"],
-    },
-}
-
-// Non-updatable network stack running in the system server process for devices not using the module
-android_app {
-    name: "InProcessNetworkStack",
-    defaults: ["NetworkStackAppCommon"],
-    certificate: "platform",
-    manifest: "AndroidManifest_InProcess.xml",
-    // InProcessNetworkStack is a replacement for NetworkStack
-    overrides: ["NetworkStack"],
-    // The permission configuration *must* be included to ensure security of the device
-    // The InProcessNetworkStack goes together with the PlatformCaptivePortalLogin, which replaces
-    // the default CaptivePortalLogin.
-    required: ["PlatformNetworkPermissionConfig", "PlatformCaptivePortalLogin"],
-}
-
-// Updatable network stack packaged as an application
-android_app {
-    name: "NetworkStack",
-    defaults: ["NetworkStackAppCommon"],
-    certificate: "networkstack",
-    manifest: "AndroidManifest.xml",
-    use_embedded_native_libs: true,
-    // The permission configuration *must* be included to ensure security of the device
-    required: ["NetworkPermissionConfig"],
-}
-
-android_library {
-    name: "TestNetworkStackLib",
-    defaults: ["NetworkStackAppCommon"],
-    manifest: "AndroidManifest.xml",
-}
-
 genrule {
     name: "statslog-networkstack-java-gen",
     tools: ["stats-log-api-gen"],
@@ -148,11 +219,10 @@
 
 android_app {
     name: "TestNetworkStack",
-    defaults: ["NetworkStackAppCommon"],
+    defaults: ["NetworkStackAppDefaults", "NetworkStackApiCurrentLevel"],
+    static_libs: ["NetworkStackApiCurrentLib"],
     certificate: "networkstack",
     manifest: ":NetworkStackTestAndroidManifest",
-    use_embedded_native_libs: true,
     // The permission configuration *must* be included to ensure security of the device
     required: ["NetworkPermissionConfig"],
 }
-
diff --git a/apishim/29/com/android/networkstack/apishim/SocketUtilsShimImpl.java b/apishim/29/com/android/networkstack/apishim/SocketUtilsShimImpl.java
new file mode 100644
index 0000000..0e41e19
--- /dev/null
+++ b/apishim/29/com/android/networkstack/apishim/SocketUtilsShimImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.networkstack.apishim;
+
+import android.net.util.SocketUtils;
+
+import androidx.annotation.NonNull;
+
+import java.net.SocketAddress;
+
+/**
+ * Implementation of SocketUtilsShim for API 29.
+ */
+public class SocketUtilsShimImpl implements SocketUtilsShim {
+    @NonNull
+    @Override
+    public SocketAddress makePacketSocketAddress(
+            int protocol, int ifIndex, @NonNull byte[] hwAddr) {
+        // Not available for API <= 29: fallback to older behavior.
+        return SocketUtils.makePacketSocketAddress(ifIndex, hwAddr);
+    }
+}
diff --git a/apishim/current/com/android/networkstack/apishim/SocketUtilsShimImpl.java b/apishim/current/com/android/networkstack/apishim/SocketUtilsShimImpl.java
new file mode 100644
index 0000000..92f8438
--- /dev/null
+++ b/apishim/current/com/android/networkstack/apishim/SocketUtilsShimImpl.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.networkstack.apishim;
+
+import android.net.util.SocketUtils;
+
+import androidx.annotation.NonNull;
+
+import java.net.SocketAddress;
+
+/**
+ * Implementation of {@link SocketUtilsShim} for API 30.
+ */
+public class SocketUtilsShimImpl implements SocketUtilsShim {
+    @NonNull
+    @Override
+    public SocketAddress makePacketSocketAddress(
+            int protocol, int ifIndex, @NonNull byte[] hwAddr) {
+        // TODO: use new API (which takes protocol, ifIndex, hwAddr) once implemented
+        return SocketUtils.makePacketSocketAddress(ifIndex, hwAddr);
+    }
+}
diff --git a/src/com/android/networkstack/apishim/SocketUtilsShim.java b/src/com/android/networkstack/apishim/SocketUtilsShim.java
new file mode 100644
index 0000000..34b5f40
--- /dev/null
+++ b/src/com/android/networkstack/apishim/SocketUtilsShim.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.networkstack.apishim;
+
+import androidx.annotation.NonNull;
+
+import java.net.SocketAddress;
+
+/**
+ * Interface used to access API methods in {@link android.net.util.SocketUtils}, with appropriate
+ * fallbacks if the methods are not yet part of the released API.
+ *
+ * <p>This interface makes it easier for callers to use SocketUtilsShimImpl, as it's more obvious
+ * what methods must be implemented on each API level, and it abstracts from callers the need to
+ * reference classes that have different implementations (which also does not work well with IDEs).
+ */
+public interface SocketUtilsShim {
+    /**
+     * Create a new instance of SocketUtilsShim.
+     */
+    @NonNull
+    static SocketUtilsShim newInstance() {
+        // TODO: when the R API is finalized, rename the API 29 shim to SocketUtilsCompat, and
+        // return it here instead of SocketUtilsShimImpl for devices with Build.VERSION <= 29.
+        // For now, the switch between implementations is done at build time (swapping the java file
+        // with another), since production modules should not be built with a non-finalized API.
+        return new SocketUtilsShimImpl();
+    }
+
+    /**
+     * @see android.net.util.SocketUtils#makePacketSocketAddress(int, int, byte[])
+     */
+    @NonNull
+    SocketAddress makePacketSocketAddress(int protocol, int ifIndex, @NonNull byte[] hwAddr);
+}
diff --git a/tests/integration/Android.bp b/tests/integration/Android.bp
index ec16467..89b3968 100644
--- a/tests/integration/Android.bp
+++ b/tests/integration/Android.bp
@@ -24,7 +24,7 @@
         "androidx.test.rules",
         "mockito-target-extended-minus-junit4",
         "net-tests-utils",
-        "NetworkStackBase",
+        "NetworkStackApiCurrentLib",
         "testables",
     ],
     libs: [
diff --git a/tests/unit/Android.bp b/tests/unit/Android.bp
index 9c1c791..3081666 100644
--- a/tests/unit/Android.bp
+++ b/tests/unit/Android.bp
@@ -24,7 +24,7 @@
         "androidx.test.rules",
         "mockito-target-extended-minus-junit4",
         "net-tests-utils",
-        "NetworkStackBase",
+        "NetworkStackApiCurrentLib",
         "testables",
     ],
     libs: [
