Use protoc-gen-javalite for java lite protos
Protobuf 3.5.2 does not natively support lite protos, instead they
are generated by the protoc-gen-javalite plugin compiled from
external/protobuf-javalite.
Bug: 117607748
Test: m checkbuild
Change-Id: I95c2d873f19d4c00e9dc312d7fdbe98cae250a8b
diff --git a/java/proto.go b/java/proto.go
index 8028039..0bb37c5 100644
--- a/java/proto.go
+++ b/java/proto.go
@@ -59,6 +59,7 @@
Description: "protoc " + protoFile.Rel(),
Output: srcJarFile,
Input: protoFile,
+ Implicits: flags.protoDeps,
Args: map[string]string{
"protoBase": protoBase,
"protoOut": flags.protoOutTypeFlag,
@@ -93,14 +94,16 @@
func protoFlags(ctx android.ModuleContext, j *CompilerProperties, p *android.ProtoProperties,
flags javaBuilderFlags) javaBuilderFlags {
+ var plugin string
+
switch String(p.Proto.Type) {
case "micro":
flags.protoOutTypeFlag = "--javamicro_out"
case "nano":
flags.protoOutTypeFlag = "--javanano_out"
case "lite":
- flags.protoOutTypeFlag = "--java_out"
- flags.protoOutParams = "lite"
+ plugin = "protoc-gen-javalite"
+ flags.protoOutTypeFlag = "--javalite_out"
case "full", "":
flags.protoOutTypeFlag = "--java_out"
default:
@@ -108,15 +111,15 @@
String(p.Proto.Type))
}
- if len(j.Proto.Output_params) > 0 {
- if flags.protoOutParams != "" {
- flags.protoOutParams += ","
- }
- flags.protoOutParams += strings.Join(j.Proto.Output_params, ",")
- }
-
+ flags.protoOutParams = strings.Join(j.Proto.Output_params, ",")
flags.protoFlags = android.ProtoFlags(ctx, p)
flags.protoRoot = android.ProtoCanonicalPathFromRoot(ctx, p)
+ if plugin != "" {
+ path := ctx.Config().HostToolPath(ctx, plugin)
+ flags.protoDeps = append(flags.protoDeps, path)
+ flags.protoFlags = append(flags.protoFlags, "--plugin="+path.String())
+ }
+
return flags
}