diff --git a/genrule/genrule.go b/genrule/genrule.go
index a49a5dd..4a9b336 100644
--- a/genrule/genrule.go
+++ b/genrule/genrule.go
@@ -85,7 +85,7 @@
 
 type generateTask struct {
 	in  android.Paths
-	out android.ModuleGenPath
+	out android.WritablePaths
 }
 
 func (g *generator) GeneratedSourceFiles() android.Paths {
@@ -167,7 +167,7 @@
 func (g *generator) generateSourceFile(ctx android.ModuleContext, task generateTask, tool string) {
 	ctx.ModuleBuild(pctx, android.ModuleBuildParams{
 		Rule:      g.rule,
-		Output:    task.out,
+		Outputs:   task.out,
 		Inputs:    task.in,
 		Implicits: g.deps,
 		Args: map[string]string{
@@ -175,7 +175,9 @@
 		},
 	})
 
-	g.outputFiles = append(g.outputFiles, task.out)
+	for _, outputFile := range task.out {
+		g.outputFiles = append(g.outputFiles, outputFile)
+	}
 }
 
 func generatorFactory(tasks taskFunc, props ...interface{}) (blueprint.Module, []interface{}) {
@@ -197,7 +199,7 @@
 		for _, in := range srcFiles {
 			tasks = append(tasks, generateTask{
 				in:  android.Paths{in},
-				out: android.GenPathWithExt(ctx, in, properties.Output_extension),
+				out: android.WritablePaths{android.GenPathWithExt(ctx, in, properties.Output_extension)},
 			})
 		}
 		return tasks
@@ -218,10 +220,14 @@
 	properties := &genRuleProperties{}
 
 	tasks := func(ctx android.ModuleContext) []generateTask {
+		outs := make(android.WritablePaths, len(properties.Out))
+		for i, out := range properties.Out {
+			outs[i] = android.PathForModuleGen(ctx, out)
+		}
 		return []generateTask{
 			{
 				in:  ctx.ExpandSources(properties.Srcs, nil),
-				out: android.PathForModuleGen(ctx, properties.Out),
+				out: outs,
 			},
 		}
 	}
@@ -233,6 +239,6 @@
 	// list of input files
 	Srcs []string
 
-	// name of the output file that will be generated
-	Out string
+	// names of the output files that will be generated
+	Out []string
 }
