Support the ability to link against additional apks.

RELNOTES: None.
PiperOrigin-RevId: 298726063
diff --git a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
index 45edeb2..ce02a88 100644
--- a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
@@ -19,8 +19,10 @@
 import com.android.builder.core.VariantType;
 import com.android.utils.StdLogger;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
 import com.google.devtools.build.android.Converters.DependencyAndroidDataListConverter;
 import com.google.devtools.build.android.Converters.PathConverter;
+import com.google.devtools.build.android.Converters.PathListConverter;
 import com.google.devtools.build.android.Converters.SerializedAndroidDataListConverter;
 import com.google.devtools.build.android.Converters.UnvalidatedAndroidDataConverter;
 import com.google.devtools.build.android.Converters.VariantTypeConverter;
@@ -144,6 +146,16 @@
     public List<SerializedAndroidData> directAssets;
 
     @Option(
+        name = "additionalApksToLinkAgainst",
+        defaultValue = "null",
+        category = "input",
+        converter = PathListConverter.class,
+        documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+        effectTags = {OptionEffectTag.UNKNOWN},
+        help = "List of APKs used during linking.")
+    public List<Path> additionalApksToLinkAgainst;
+
+    @Option(
         name = "rOutput",
         defaultValue = "null",
         converter = PathConverter.class,
@@ -430,12 +442,21 @@
                       .flatMap(dep -> dep.assetDirs.stream()))
               .collect(toList());
 
+      List<StaticLibrary> dependencies =
+          Lists.newArrayList(StaticLibrary.from(aaptConfigOptions.androidJar));
+      if (options.additionalApksToLinkAgainst != null) {
+        dependencies.addAll(
+            options.additionalApksToLinkAgainst.stream()
+                .map(StaticLibrary::from)
+                .collect(toList()));
+      }
+
       final PackagedResources packagedResources =
           ResourceLinker.create(aaptConfigOptions.aapt2, executorService, linkedOut)
               .profileUsing(profiler)
               .customPackage(options.packageForR)
               .outputAsProto(aaptConfigOptions.resourceTableAsProto)
-              .dependencies(ImmutableList.of(StaticLibrary.from(aaptConfigOptions.androidJar)))
+              .dependencies(ImmutableList.copyOf(dependencies))
               .include(compiledResourceDeps)
               .withAssets(assetDirs)
               .buildVersion(aaptConfigOptions.buildToolsVersion)