diff --git a/src/test/java/com/google/devtools/build/android/AttributeResourcesAndroidDataMergerTest.java b/src/test/java/com/google/devtools/build/android/AttributeResourcesAndroidDataMergerTest.java
index a306e06..3913245 100644
--- a/src/test/java/com/google/devtools/build/android/AttributeResourcesAndroidDataMergerTest.java
+++ b/src/test/java/com/google/devtools/build/android/AttributeResourcesAndroidDataMergerTest.java
@@ -83,17 +83,40 @@
             TestParameters.builder()
                 .set1(Strength.WEAK, 1)
                 .set2(Strength.WEAK, 0xFFFF)
-                .setExpectedMergeConflict(
+                .setExpectedMergedAndroidData(
                     ctx ->
-                        MergeConflict.of(
-                            ctx.fqnFactory.parse("attr/ambiguousName"),
-                            DataResourceXml.createWithNoNamespace(
-                                ctx.transitiveRoot1.resolve("res/values/attrs.xml"),
-                                AttrXmlResourceValue.weakFromFormatEntries(
-                                    ReferenceResourceXmlAttrValue.asEntry())),
-                            DataResourceXml.createWithNoNamespace(
-                                ctx.transitiveRoot2.resolve("res/values/attrs.xml"),
-                                AttrXmlResourceValue.weakFromFormatEntries())))
+                        UnwrittenMergedAndroidData.of(
+                            ctx.primary.getManifest(),
+                            ParsedAndroidDataBuilder.empty(),
+                            ParsedAndroidDataBuilder.buildOn(ctx.fqnFactory)
+                                .overwritable(
+                                    xml("attr/ambiguousName")
+                                        .root(ctx.primaryRoot)
+                                        .source(ctx.transitiveAttr1.overwrite(ctx.transitiveAttr2))
+                                        .value(
+                                            AttrXmlResourceValue.weakFromFormatEntries(
+                                                ReferenceResourceXmlAttrValue.asEntry())))
+                                .build()))
+                .build()
+          },
+          {
+            TestParameters.builder()
+                .set1(Strength.WEAK, 0xFFFF)
+                .set2(Strength.WEAK, 1)
+                .setExpectedMergedAndroidData(
+                    ctx ->
+                        UnwrittenMergedAndroidData.of(
+                            ctx.primary.getManifest(),
+                            ParsedAndroidDataBuilder.empty(),
+                            ParsedAndroidDataBuilder.buildOn(ctx.fqnFactory)
+                                .overwritable(
+                                    xml("attr/ambiguousName")
+                                        .root(ctx.primaryRoot)
+                                        .source(ctx.transitiveAttr2.overwrite(ctx.transitiveAttr1))
+                                        .value(
+                                            AttrXmlResourceValue.weakFromFormatEntries(
+                                                ReferenceResourceXmlAttrValue.asEntry())))
+                                .build()))
                 .build()
           },
           {
@@ -214,6 +237,24 @@
           },
           {
             TestParameters.builder()
+                .set1(Strength.WEAK, 1)
+                .set2(Strength.WEAK, 2)
+                .setExpectedMergeConflict(
+                    ctx ->
+                        MergeConflict.of(
+                            ctx.fqnFactory.parse("attr/ambiguousName"),
+                            DataResourceXml.createWithNoNamespace(
+                                ctx.transitiveRoot1.resolve("res/values/attrs.xml"),
+                                AttrXmlResourceValue.weakFromFormatEntries(
+                                    ReferenceResourceXmlAttrValue.asEntry())),
+                            DataResourceXml.createWithNoNamespace(
+                                ctx.transitiveRoot2.resolve("res/values/attrs.xml"),
+                                AttrXmlResourceValue.weakFromFormatEntries(
+                                    StringResourceXmlAttrValue.asEntry()))))
+                .build()
+          },
+          {
+            TestParameters.builder()
                 .set1(Strength.STRONG, 1)
                 .set2(Strength.WEAK, 1)
                 .setExpectedMergedAndroidData(
diff --git a/src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java b/src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java
index 50a7a7f..3f37fcf 100644
--- a/src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java
+++ b/src/tools/android/java/com/google/devtools/build/android/xml/AttrXmlResourceValue.java
@@ -453,6 +453,12 @@
       return 1;
     } else if (!that.weak && weak && (formats.isEmpty() || formats.equals(that.formats))) {
       return -1;
+    } else if (weak && that.weak) {
+      if (!formats.isEmpty() && that.formats.isEmpty()) {
+        return 1;
+      } else if (formats.isEmpty() && !that.formats.isEmpty()) {
+        return -1;
+      }
     }
     return 0;
   }
