android - 默认在gradle中为proto文件生成的类注册一个包,而不是在proto文件中
问题描述
在我的 android 应用程序中,我使用 proto 文件。例如,我有原始文件 Stats.proto
syntax = "proto3";
package com.me.test;
message Stat {
string a = 1;
string b = 2;
string c = 3;
string d = 4;
}
我需要在每个 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'
}
}
但我需要使用 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 { }
}
}
}
}
我想有类似的逻辑
option 'java_package=src/proto/simple-data.proto|my_package'
像 javalite 中的 javanano
我可以实施吗?
解决方案
根据文档,并假设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=.......'
}
}
}
}
}
编辑:尝试以检查对象:
task.plugins {
javalite {
it.properties.each { println "$it.key -> $it.value" }
}
}
推荐阅读
- python - 用pyproj映射经纬度坐标
- python - Tkinter:winfo_reqwith() 返回错误值
- node.js - 为什么使用适用于 JavaScript 的 AWS 开发工具包列出 S3 存储桶文件夹中的对象会返回空的 Contents 数组但 KeyCount 大于 1?
- aws-glue - AWS Glue 自定义分类器
- visual-studio - 在 Visual Studio 2019 中重新打开关闭的选项卡(撤消关闭)?
- flutter - 滚动未来的 ListView
- flutter - 未处理的异常:RangeError(索引):无效值:有效值范围为空:0
- forms - Symfony 完全忽略了重定向和表单的处理
- facebook - Chatfuel 或 Manychat 等聊天机器人平台如何在后端创建 Facebook 应用程序来服务聊天机器人?
- python - 如何以表格格式编写日志记录我希望它们在 python 中按列显示而不使用 pandas