BEGIN_PUBLIC
When manifest merging is a noop, write a log to satisfy bazel's output file expectations.
END_PUBLIC

PiperOrigin-RevId: 410516173
diff --git a/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java b/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java
index 64832bc..4d91397 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java
@@ -221,7 +221,10 @@
               options.manifestOutput,
               options.log,
               optionsParser.getOptions(ResourceProcessorCommonOptions.class).logWarnings);
-
+      // Bazel expects a log file output as a result of manifest merging, even if it is a no-op.
+      if (options.log != null && !options.log.toFile().exists()) {
+        options.log.toFile().createNewFile();
+      }
       if (!mergedManifest.equals(options.manifestOutput)) {
         // manifestProcess.mergeManifest returns the merged manifest, or, if merging was a no-op,
         // the original primary manifest. In the latter case, explicitly copy that primary manifest