diff --git a/tools/aapt2/link/Link.cpp b/tools/aapt2/link/Link.cpp
index a4fa7e0..4767bc9 100644
--- a/tools/aapt2/link/Link.cpp
+++ b/tools/aapt2/link/Link.cpp
@@ -1389,6 +1389,7 @@
 int link(const std::vector<StringPiece>& args) {
     LinkContext context;
     LinkOptions options;
+    std::vector<std::string> overlayArgList;
     Maybe<std::string> privateSymbolsPackage;
     Maybe<std::string> minSdkVersion, targetSdkVersion;
     Maybe<std::string> renameManifestPackage, renameInstrumentationTargetPackage;
@@ -1408,7 +1409,7 @@
             .optionalFlagList("-I", "Adds an Android APK to link against", &options.includePaths)
             .optionalFlagList("-R", "Compilation unit to link, using `overlay` semantics.\n"
                               "The last conflicting resource given takes precedence.",
-                              &options.overlayFiles)
+                              &overlayArgList)
             .optionalFlag("--java", "Directory in which to generate R.java",
                           &options.generateJavaClassPath)
             .optionalFlag("--proguard", "Output file for generated Proguard rules",
@@ -1493,6 +1494,20 @@
         }
     }
 
+    // Expand all argument-files passed to -R.
+    for (const std::string& arg : overlayArgList) {
+        if (util::stringStartsWith<char>(arg, "@")) {
+            const std::string path = arg.substr(1, arg.size() - 1);
+            std::string error;
+            if (!file::appendArgsFromFile(path, &options.overlayFiles, &error)) {
+                context.getDiagnostics()->error(DiagMessage(path) << error);
+                return 1;
+            }
+        } else {
+            options.overlayFiles.push_back(arg);
+        }
+    }
+
     if (verbose) {
         context.setVerbose(verbose);
     }
