1 go grpc-go 相关技术专栏 总入口
2 Protobuf介绍与实战 图文专栏 文章目录
当我们在学习xxx.proto文件时,可能会发现依赖下面的文件:
类似的文件,如:
any.proto
duration.proto
source_context.proto
type.proto
api.proto
empty.proto
struct.proto
wrappers.proto
descriptor.proto
field_mask.proto
timestamp.proto
在Android系统中,.proto文件是protobuf格式的文件,主要用于定义数据结构和网络通信协议。为了在Android平台上编译.proto文件,需要编写.mk文件描述编译过程。
编写.mk文件的具体步骤如下:
1. 定义变量PROTOBUF_DIR,表示protobuf库的路径;
2. 定义变量PROTO_FILES,表示.proto文件的名称,可以使用通配符匹配多个文件,例如"*.proto";
3. 定义规则%.pb.cc和%.pb.h,分别表示将.proto文件编译成C++代码和头文件,使用protoc命令进行编译,并指定输出路径和生成的文件名;
4. 定义最终目标文件,使用$(PROTO_FILES)变量匹配所有.proto文件,生成对应的.pb.cc和.pb.h文件,最终将它们打包成静态库。
一个示例.mk文件如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
PROTOBUF_DIR := /path/to/protobuf/libraries
PROTO_FILES := my_proto.proto
$(PROTO_FILES:%.proto=%.pb.cc) $(PROTO_FILES:%.proto=%.pb.h): $(PROTO_FILES)
$(PROTOBUF_DIR)/bin/protoc --proto_path=$(LOCAL_PATH) --cpp_out=$(LOCAL_PATH) $^
LOCAL_SRC_FILES := $(PROTO_FILES:%.proto=%.pb.cc)
include $(BUILD_STATIC_LIBRARY)
以上规则中,静态库的最终名称为"libmy_proto.a",可以通过修改include $(BUILD_STATIC_LIBRARY)中的LOCAL_MODULE变量进行更改。
总之,在.mk文件中定义好这些参数和规则,就可以通过执行make命令来编译.proto文件并生成静态库了。
解决idea下removeContentEntry: removed content entry url ‘file://*****‘ still exists after removing的问题