diff --git a/android/packaging.go b/android/packaging.go
index fe61da1..6677218 100644
--- a/android/packaging.go
+++ b/android/packaging.go
@@ -50,25 +50,6 @@
 	skipInstall bool
 }
 
-func (p *PackagingSpec) Equals(other *PackagingSpec) bool {
-	if other == nil {
-		return false
-	}
-	if p.relPathInPackage != other.relPathInPackage {
-		return false
-	}
-	if p.srcPath != other.srcPath || p.symlinkTarget != other.symlinkTarget {
-		return false
-	}
-	if p.executable != other.executable {
-		return false
-	}
-	if p.partition != other.partition {
-		return false
-	}
-	return true
-}
-
 // Get file name of installed package
 func (p *PackagingSpec) FileName() string {
 	if p.relPathInPackage != "" {
@@ -262,15 +243,9 @@
 					continue
 				}
 			}
-			dstPath := ps.relPathInPackage
-			if existingPs, ok := m[dstPath]; ok {
-				if !existingPs.Equals(&ps) {
-					ctx.ModuleErrorf("packaging conflict at %v:\n%v\n%v", dstPath, existingPs, ps)
-				}
-				continue
+			if _, ok := m[ps.relPathInPackage]; !ok {
+				m[ps.relPathInPackage] = ps
 			}
-
-			m[dstPath] = ps
 		}
 	})
 	return m
diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go
index acd4813..1215048 100644
--- a/filesystem/filesystem_test.go
+++ b/filesystem/filesystem_test.go
@@ -442,26 +442,3 @@
 		}
 	`)
 }
-
-func TestPreventDuplicatedEntries(t *testing.T) {
-	fixture.ExtendWithErrorHandler(android.FixtureExpectsOneErrorPattern(
-		"packaging conflict at")).
-		RunTestWithBp(t, `
-		android_filesystem {
-			name: "fs",
-			deps: [
-				"foo",
-				"foo_dup",
-			],
-		}
-
-		cc_binary {
-			name: "foo",
-		}
-
-		cc_binary {
-			name: "foo_dup",
-			stem: "foo",
-		}
-	`)
-}
