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
我能实现吗?
根据文档,并假设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)
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |