Disable installing unused prebuilts

If the source module is being used instead of the prebuilt module,
disable installing the prebuilt module.

Test: m -j checkbuild
Change-Id: I55e77021b0f9572b0737d960cba89274f696775d
diff --git a/android/prebuilt.go b/android/prebuilt.go
index fb9e515..7652429 100644
--- a/android/prebuilt.go
+++ b/android/prebuilt.go
@@ -68,6 +68,7 @@
 type PrebuiltInterface interface {
 	Module
 	Prebuilt() *Prebuilt
+	SkipInstall()
 }
 
 type PrebuiltSourceInterface interface {
@@ -89,14 +90,19 @@
 	}
 }
 
-// PrebuiltReplaceMutator replaces dependencies on the source module with dependencies on the prebuilt
-// when both modules exist and the prebuilt should be used.
+// PrebuiltReplaceMutator replaces dependencies on the source module with dependencies on the
+// prebuilt when both modules exist and the prebuilt should be used.  When the prebuilt should not
+// be used, disable installing it.
 func PrebuiltReplaceMutator(ctx BottomUpMutatorContext) {
 	if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil {
 		p := m.Prebuilt()
 		name := m.base().BaseModuleName()
-		if p.Properties.SourceExists && p.usePrebuilt(ctx) {
-			ctx.ReplaceDependencies(name)
+		if p.usePrebuilt(ctx) {
+			if p.Properties.SourceExists {
+				ctx.ReplaceDependencies(name)
+			}
+		} else {
+			m.SkipInstall()
 		}
 	}
 }