diff --git a/android/androidmk.go b/android/androidmk.go
index 42593ba..063830b 100644
--- a/android/androidmk.go
+++ b/android/androidmk.go
@@ -238,6 +238,15 @@
 		availableTaggedDists = availableTaggedDists.addPathsForTag(DefaultDistTag, a.OutputFile.Path())
 	}
 
+	// If the distFiles created by GenerateTaggedDistFiles contains paths for the
+	// DefaultDistTag then that takes priority so delete any existing paths.
+	if _, ok := amod.distFiles[DefaultDistTag]; ok {
+		delete(availableTaggedDists, DefaultDistTag)
+	}
+
+	// Finally, merge the distFiles created by GenerateTaggedDistFiles.
+	availableTaggedDists = availableTaggedDists.merge(amod.distFiles)
+
 	if len(availableTaggedDists) == 0 {
 		// Nothing dist-able for this module.
 		return nil
diff --git a/android/androidmk_test.go b/android/androidmk_test.go
index ae9de55..347b92e 100644
--- a/android/androidmk_test.go
+++ b/android/androidmk_test.go
@@ -601,8 +601,6 @@
 					{
 						targets: ["my_goal"],
 					},
-					// The following is silently ignored because the dist files do not
-					// contain the tagged files.
 					{
 						targets: ["my_goal"],
 						tag: ".multiple",
@@ -617,6 +615,13 @@
 					distCopyForTest("default-dist.out", "default-dist.out"),
 				},
 			},
+			{
+				goals: "my_goal",
+				copies: []distCopy{
+					distCopyForTest("two.out", "two.out"),
+					distCopyForTest("three/four.out", "four.out"),
+				},
+			},
 		},
 	})
 
@@ -631,15 +636,23 @@
 					{
 						targets: ["my_goal"],
 					},
-					// The following is silently ignored because the dist files do not
-					// contain the tagged files.
 					{
 						targets: ["my_goal"],
 						tag: ".multiple",
 					},
 				],
 			}
-`, nil)
+`, &distContributions{
+		copiesForGoals: []*copiesForGoals{
+			{
+				goals: "my_goal",
+				copies: []distCopy{
+					distCopyForTest("two.out", "two.out"),
+					distCopyForTest("three/four.out", "four.out"),
+				},
+			},
+		},
+	})
 
 	testHelper(t, "tagged-dist-files-default-output", `
 			custom {
@@ -683,8 +696,6 @@
 					{
 						targets: ["my_goal"],
 					},
-					// The following is silently ignored because the dist files do not
-					// contain the tagged files.
 					{
 						targets: ["my_goal"],
 						tag: ".multiple",
@@ -699,6 +710,13 @@
 					distCopyForTest("default-dist.out", "default-dist.out"),
 				},
 			},
+			{
+				goals: "my_goal",
+				copies: []distCopy{
+					distCopyForTest("two.out", "two.out"),
+					distCopyForTest("three/four.out", "four.out"),
+				},
+			},
 		},
 	})
 
@@ -711,8 +729,6 @@
 					{
 						targets: ["my_goal"],
 					},
-					// The following is silently ignored because the dist files do not
-					// contain the tagged files.
 					{
 						targets: ["my_goal"],
 						tag: ".multiple",
@@ -727,6 +743,13 @@
 					distCopyForTest("dist-output-file.out", "dist-output-file.out"),
 				},
 			},
+			{
+				goals: "my_goal",
+				copies: []distCopy{
+					distCopyForTest("two.out", "two.out"),
+					distCopyForTest("three/four.out", "four.out"),
+				},
+			},
 		},
 	})
 }
diff --git a/android/module.go b/android/module.go
index d64b516..d680baa 100644
--- a/android/module.go
+++ b/android/module.go
@@ -1010,6 +1010,9 @@
 	noticeFiles        Paths
 	phonies            map[string]Paths
 
+	// The files to copy to the dist as explicitly specified in the .bp file.
+	distFiles TaggedDistFiles
+
 	// Used by buildTargetSingleton to create checkbuild and per-directory build targets
 	// Only set on the final variant of each module
 	installTarget    WritablePath
@@ -1117,18 +1120,25 @@
 		// the special tag name which represents that.
 		tag := proptools.StringDefault(dist.Tag, DefaultDistTag)
 
-		// Call the OutputFiles(tag) method to get the paths associated with the tag.
-		distFilesForTag, err := m.base().module.(OutputFileProducer).OutputFiles(tag)
+		if outputFileProducer, ok := m.module.(OutputFileProducer); ok {
+			// Call the OutputFiles(tag) method to get the paths associated with the tag.
+			distFilesForTag, err := outputFileProducer.OutputFiles(tag)
 
-		// If the tag was not supported and is not DefaultDistTag then it is an error.
-		// Failing to find paths for DefaultDistTag is not an error. It just means
-		// that the module type requires the legacy behavior.
-		if err != nil && tag != DefaultDistTag {
-			ctx.PropertyErrorf("dist.tag", "%s", err.Error())
-			continue
+			// If the tag was not supported and is not DefaultDistTag then it is an error.
+			// Failing to find paths for DefaultDistTag is not an error. It just means
+			// that the module type requires the legacy behavior.
+			if err != nil && tag != DefaultDistTag {
+				ctx.PropertyErrorf("dist.tag", "%s", err.Error())
+			}
+
+			distFiles = distFiles.addPathsForTag(tag, distFilesForTag...)
+		} else if tag != DefaultDistTag {
+			// If the tag was specified then it is an error if the module does not
+			// implement OutputFileProducer because there is no other way of accessing
+			// the paths for the specified tag.
+			ctx.PropertyErrorf("dist.tag",
+				"tag %s not supported because the module does not implement OutputFileProducer", tag)
 		}
-
-		distFiles = distFiles.addPathsForTag(tag, distFilesForTag...)
 	}
 
 	return distFiles
@@ -1658,6 +1668,15 @@
 			return
 		}
 
+		// Create the set of tagged dist files after calling GenerateAndroidBuildActions
+		// as GenerateTaggedDistFiles() calls OutputFiles(tag) and so relies on the
+		// output paths being set which must be done before or during
+		// GenerateAndroidBuildActions.
+		m.distFiles = m.GenerateTaggedDistFiles(ctx)
+		if ctx.Failed() {
+			return
+		}
+
 		m.installFiles = append(m.installFiles, ctx.installFiles...)
 		m.checkbuildFiles = append(m.checkbuildFiles, ctx.checkbuildFiles...)
 		m.packagingSpecs = append(m.packagingSpecs, ctx.packagingSpecs...)
