diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java b/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java
index 962de7e..20a63bf 100644
--- a/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java
+++ b/src/tools/android/java/com/google/devtools/build/android/AndroidDataMerger.java
@@ -53,6 +53,23 @@
     boolean checkEquality(DataSource one, DataSource two) throws IOException;
   }
 
+  /**
+   * Compares two paths for equality. Does not check the contents of the files.
+   *
+   * <p>TODO(b/74333698): Always check the contents of conflicting resources
+   */
+  static class PathComparingChecker implements SourceChecker {
+
+    static SourceChecker create() {
+      return new PathComparingChecker();
+    }
+
+    @Override
+    public boolean checkEquality(DataSource one, DataSource two) throws IOException {
+      return one.getPath().equals(two.getPath());
+    }
+  }
+
   /** Compares two paths by the contents of the files. */
   static class ContentComparingChecker implements SourceChecker {
 
@@ -125,8 +142,10 @@
 
   /** Creates a merger with a file contents hashing deduplicator. */
   static AndroidDataMerger createWithPathDeduplictor(
-      ListeningExecutorService executorService, AndroidDataDeserializer deserializer) {
-    return new AndroidDataMerger(ContentComparingChecker.create(), executorService, deserializer);
+      ListeningExecutorService executorService,
+      AndroidDataDeserializer deserializer,
+      SourceChecker checker) {
+    return new AndroidDataMerger(checker, executorService, deserializer);
   }
 
   private AndroidDataMerger(
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java
index a6e97b9..a5126c6 100644
--- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java
+++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceMerger.java
@@ -18,6 +18,9 @@
 import com.android.ide.common.internal.PngCruncher;
 import com.google.common.base.Stopwatch;
 import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.devtools.build.android.AndroidDataMerger.ContentComparingChecker;
+import com.google.devtools.build.android.AndroidDataMerger.PathComparingChecker;
+import com.google.devtools.build.android.AndroidDataMerger.SourceChecker;
 import java.io.IOException;
 import java.nio.file.Path;
 import java.util.List;
@@ -75,7 +78,8 @@
               primaryManifest,
               type != VariantType.LIBRARY,
               deserializer,
-              throwOnResourceConflict);
+              throwOnResourceConflict,
+              ContentComparingChecker.create());
       timer.reset().start();
       if (symbolsOut != null) {
         AndroidDataSerializer serializer = AndroidDataSerializer.create();
@@ -112,11 +116,13 @@
       Path primaryManifest,
       boolean allowPrimaryOverrideAll,
       AndroidDataDeserializer deserializer,
-      boolean throwOnResourceConflict) {
+      boolean throwOnResourceConflict,
+      SourceChecker checker) {
     Stopwatch timer = Stopwatch.createStarted();
+    // TODO(b/74333698): Always check the contents of conflicting resources
     try {
       AndroidDataMerger merger =
-          AndroidDataMerger.createWithPathDeduplictor(executorService, deserializer);
+          AndroidDataMerger.createWithPathDeduplictor(executorService, deserializer, checker);
       return merger.loadAndMerge(
           transitive,
           direct,
@@ -229,7 +235,8 @@
               primaryManifest,
               false,
               deserializer,
-              throwOnResourceConflict);
+              throwOnResourceConflict,
+              PathComparingChecker.create());
       timer.reset().start();
       merged.writeResourceClass(rclassWriter);
       logger.fine(
