Make prebuilt_apex be usable via :modulename syntax

Test: m
Bug: 127789981
Bug: 128677967
Change-Id: Ie1a1147c1d5570cd7eda48e274faabf95566d53f
diff --git a/apex/apex.go b/apex/apex.go
index ed4ec1a..004de86 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1297,6 +1297,7 @@
 	inputApex       android.Path
 	installDir      android.OutputPath
 	installFilename string
+	outputApex      android.WritablePath
 }
 
 type PrebuiltProperties struct {
@@ -1357,6 +1358,10 @@
 	p.properties.Source = src
 }
 
+func (p *Prebuilt) Srcs() android.Paths {
+	return android.Paths{p.outputApex}
+}
+
 func (p *Prebuilt) GenerateAndroidBuildActions(ctx android.ModuleContext) {
 	// TODO(jungjw): Check the key validity.
 	p.inputApex = p.Prebuilt().SingleSourcePath(ctx)
@@ -1365,6 +1370,12 @@
 	if !strings.HasSuffix(p.installFilename, imageApexSuffix) {
 		ctx.ModuleErrorf("filename should end in %s for prebuilt_apex", imageApexSuffix)
 	}
+	p.outputApex = android.PathForModuleOut(ctx, p.installFilename)
+	ctx.Build(pctx, android.BuildParams{
+		Rule:   android.Cp,
+		Input:  p.inputApex,
+		Output: p.outputApex,
+	})
 	if p.installable() {
 		ctx.InstallFile(p.installDir, p.installFilename, p.inputApex)
 	}