diff --git a/java/gen.go b/java/gen.go
index 0b84d44..dd86f66 100644
--- a/java/gen.go
+++ b/java/gen.go
@@ -32,7 +32,13 @@
 	pctx.VariableFunc("aidlCmd", func(c interface{}) (string, error) {
 		return c.(common.Config).HostBinTool("aidl")
 	})
+	pctx.StaticVariable("logtagsCmd", "${srcDir}/build/tools/java-event-log-tags.py")
+	pctx.StaticVariable("mergeLogtagsCmd", "${srcDir}/build/tools/merge-event-log-tags.py")
 	pctx.VariableConfigMethod("srcDir", common.Config.SrcDir)
+
+	pctx.VariableFunc("allLogtagsFile", func(c interface{}) (string, error) {
+		return filepath.Join(c.(common.Config).IntermediatesDir(), "all-event-log-tags.txt"), nil
+	})
 }
 
 var (
@@ -42,6 +48,18 @@
 			Description: "aidl $out",
 		},
 		"depFile", "aidlFlags")
+
+	logtags = pctx.StaticRule("logtags",
+		blueprint.RuleParams{
+			Command:     "$logtagsCmd -o $out $in $allLogtagsFile",
+			Description: "logtags $out",
+		})
+
+	mergeLogtags = pctx.StaticRule("mergeLogtags",
+		blueprint.RuleParams{
+			Command:     "$mergeLogtagsCmd -o $out $in",
+			Description: "merge logtags $out",
+		})
 )
 
 func genAidl(ctx common.AndroidModuleContext, aidlFile, aidlFlags string) string {
@@ -64,7 +82,22 @@
 	return javaFile
 }
 
-func genSources(ctx common.AndroidModuleContext, srcFiles []string,
+func genLogtags(ctx common.AndroidModuleContext, logtagsFile string) string {
+	javaFile := strings.TrimPrefix(logtagsFile, common.ModuleSrcDir(ctx))
+	javaFile = filepath.Join(common.ModuleGenDir(ctx), javaFile)
+	javaFile = pathtools.ReplaceExtension(javaFile, "java")
+
+	ctx.Build(pctx, blueprint.BuildParams{
+		Rule:      logtags,
+		Outputs:   []string{javaFile},
+		Inputs:    []string{logtagsFile},
+		Implicits: []string{"$logtagsCmd"},
+	})
+
+	return javaFile
+}
+
+func (j *javaBase) genSources(ctx common.AndroidModuleContext, srcFiles []string,
 	flags javaBuilderFlags) []string {
 
 	for i, srcFile := range srcFiles {
@@ -72,8 +105,37 @@
 		case ".aidl":
 			javaFile := genAidl(ctx, srcFile, flags.aidlFlags)
 			srcFiles[i] = javaFile
+		case ".logtags":
+			j.logtagsSrcs = append(j.logtagsSrcs, srcFile)
+			javaFile := genLogtags(ctx, srcFile)
+			srcFiles[i] = javaFile
 		}
 	}
 
 	return srcFiles
 }
+
+func LogtagsSingleton() blueprint.Singleton {
+	return &logtagsSingleton{}
+}
+
+type logtagsProducer interface {
+	logtags() []string
+}
+
+type logtagsSingleton struct{}
+
+func (l *logtagsSingleton) GenerateBuildActions(ctx blueprint.SingletonContext) {
+	var allLogtags []string
+	ctx.VisitAllModules(func(module blueprint.Module) {
+		if logtags, ok := module.(logtagsProducer); ok {
+			allLogtags = append(allLogtags, logtags.logtags()...)
+		}
+	})
+
+	ctx.Build(pctx, blueprint.BuildParams{
+		Rule:    mergeLogtags,
+		Outputs: []string{"$allLogtagsFile"},
+		Inputs:  allLogtags,
+	})
+}
