diff --git a/api/system-current.txt b/api/system-current.txt
index 764709a..aabc6b6 100755
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -2002,11 +2002,10 @@
   }
 
   public class DataLoaderParams {
-    method @NonNull public static final android.content.pm.DataLoaderParams forIncremental(@NonNull android.content.ComponentName, @NonNull String, @Nullable java.util.Map<java.lang.String,android.os.ParcelFileDescriptor>);
+    method @NonNull public static final android.content.pm.DataLoaderParams forIncremental(@NonNull android.content.ComponentName, @NonNull String);
     method @NonNull public static final android.content.pm.DataLoaderParams forStreaming(@NonNull android.content.ComponentName, @NonNull String);
     method @NonNull public final String getArguments();
     method @NonNull public final android.content.ComponentName getComponentName();
-    method @NonNull public final java.util.Map<java.lang.String,android.os.ParcelFileDescriptor> getDynamicArgs();
     method @NonNull public final int getType();
   }
 
diff --git a/core/java/android/content/pm/DataLoaderParams.java b/core/java/android/content/pm/DataLoaderParams.java
index 60d7bb3..99c0907 100644
--- a/core/java/android/content/pm/DataLoaderParams.java
+++ b/core/java/android/content/pm/DataLoaderParams.java
@@ -22,9 +22,7 @@
 import android.content.ComponentName;
 import android.os.ParcelFileDescriptor;
 
-import java.util.Arrays;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * This class represents the parameters used to configure a Data Loader.
@@ -54,12 +52,10 @@
      *
      * @param componentName Data Loader component supporting Incremental installation.
      * @param arguments free form installation arguments
-     * @param namedFds TODO(b/146080380) remove
      */
     public static final @NonNull DataLoaderParams forIncremental(
-            @NonNull ComponentName componentName, @NonNull String arguments,
-            @Nullable Map<String, ParcelFileDescriptor> namedFds) {
-        return new DataLoaderParams(DataLoaderType.INCREMENTAL, componentName, arguments, namedFds);
+            @NonNull ComponentName componentName, @NonNull String arguments) {
+        return new DataLoaderParams(DataLoaderType.INCREMENTAL, componentName, arguments, null);
     }
 
     /** @hide */
@@ -115,12 +111,4 @@
     public final @NonNull String getArguments() {
         return mData.arguments;
     }
-
-    /**
-     * @return data loader's dynamic arguments such as file descriptors TODO: remove
-     */
-    public final @NonNull Map<String, ParcelFileDescriptor> getDynamicArgs() {
-        return Arrays.stream(mData.dynamicArgs).collect(
-                Collectors.toMap(p -> p.name, p -> p.fd));
-    }
 }
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java b/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java
index 8f30e7d..6d83d70 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java
@@ -91,7 +91,7 @@
 
     static DataLoaderParams getIncrementalDataLoaderParams(ShellCommand shellCommand) {
         return DataLoaderParams.forIncremental(new ComponentName(PACKAGE, CLASS),
-                getDataLoaderParamsArgs(shellCommand), null);
+                getDataLoaderParamsArgs(shellCommand));
     }
 
     private static int extractShellCommandId(String args) {
