默认情况下,不在proto文件中注册从gradle中的proto文件生成的类的包

Alh*_*erd 10 android protocol-buffers gradle

在我的Android应用程序中,我使用原型文件.例如,我有proto文件Stats.proto

syntax = "proto3";
package com.me.test;

message Stat {
    string a = 1;
    string b = 2;
    string c = 3;
    string d = 4;
}
Run Code Online (Sandbox Code Playgroud)

我需要在每个proto文件本身注册包,这很不舒服,因为我有很多文件.我想在gradle中注册默认包,例如'package com.me.test',它使用我创建的每个文件.我在javanano 找到了解决方案

nano {
    proto {
      // Selects between --java_out and --javanano_out, default is 'java'
      mode 'javanano'
      // Options added to --java_out or --javanano_out
      option 'java_package=src/proto/simple-data.proto|my_package'
      option 'java_outer_classname=src/proto/simple-data.proto|OuterName'
      // Apply the 'grpc' plugin defined in protobufNativeCodeGenPluginDeps
      plugin 'grpc' {
        // Options added to --grpc_out
        option 'nano=true'
      }
    }
Run Code Online (Sandbox Code Playgroud)

但我需要使用javalite

protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.0.0'
    }
    plugins {
        javalite {
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.plugins {
                javalite { }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望有类似的逻辑

option 'java_package=src/proto/simple-data.proto|my_package'
Run Code Online (Sandbox Code Playgroud)

像javanano在javalite

我能实现吗?

ToY*_*nos 1

根据文档,并假设javalite支持相同的功能java(这是一个很长的机会,因为我没有找到这个插件的任何文档痕迹),只需尝试:

protobuf {
    protoc {
        artifact = 'com.google.protobuf:protoc:3.0.0'
    }
    plugins {
        javalite {
            artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
        }
    }
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.plugins {
                javalite {
                    option 'java_package=.......'                 
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:尝试检查对象:

task.plugins {
    javalite {
        it.properties.each { println "$it.key -> $it.value" }
    }
}
Run Code Online (Sandbox Code Playgroud)