diff --git a/apex/apex.go b/apex/apex.go
index 2332acc..ed4ec1a 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1294,8 +1294,9 @@
 
 	properties PrebuiltProperties
 
-	inputApex  android.Path
-	installDir android.OutputPath
+	inputApex       android.Path
+	installDir      android.OutputPath
+	installFilename string
 }
 
 type PrebuiltProperties struct {
@@ -1319,6 +1320,9 @@
 	}
 
 	Installable *bool
+	// Optional name for the installed apex. If unspecified, name of the
+	// module is used as the file name
+	Filename *string
 }
 
 func (p *Prebuilt) installable() bool {
@@ -1357,8 +1361,12 @@
 	// TODO(jungjw): Check the key validity.
 	p.inputApex = p.Prebuilt().SingleSourcePath(ctx)
 	p.installDir = android.PathForModuleInstall(ctx, "apex")
+	p.installFilename = proptools.StringDefault(p.properties.Filename, ctx.ModuleName()+imageApexSuffix)
+	if !strings.HasSuffix(p.installFilename, imageApexSuffix) {
+		ctx.ModuleErrorf("filename should end in %s for prebuilt_apex", imageApexSuffix)
+	}
 	if p.installable() {
-		ctx.InstallFile(p.installDir, ctx.ModuleName()+imageApexSuffix, p.inputApex)
+		ctx.InstallFile(p.installDir, p.installFilename, p.inputApex)
 	}
 }
 
@@ -1378,7 +1386,7 @@
 		Extra: []android.AndroidMkExtraFunc{
 			func(w io.Writer, outputFile android.Path) {
 				fmt.Fprintln(w, "LOCAL_MODULE_PATH :=", filepath.Join("$(OUT_DIR)", p.installDir.RelPathString()))
-				fmt.Fprintln(w, "LOCAL_MODULE_STEM :=", p.BaseModuleName()+imageApexSuffix)
+				fmt.Fprintln(w, "LOCAL_MODULE_STEM :=", p.installFilename)
 				fmt.Fprintln(w, "LOCAL_UNINSTALLABLE_MODULE :=", !p.installable())
 			},
 		},
