什么是hidl_protobuf 在通过 hidl 接口传输时,是不是应该用 string 啊

在 Android 的 java 层往 native 层的一个 service 传输一个 protobuf 的字符串:

首先 proto 文件( information )很简单:

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

message info {

optional int32 member = 1;

}

mk 里面分别编译了 java 库和 c++库:

include $(CLEAR_VARS)

LOCAL_SRC_FILES := \

$(call all-proto-files-under, proto) \

LOCAL_MODULE := xxx

LOCAL_MODULE_TAGS := optional

LOCAL_VENDOR_MODULE := true

#LOCAL_PROTOC_OPTIMIZE_TYPE := nano

LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/

LOCAL_SHARED_LIBRARIES := liblog

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := \

$(call all-proto-files-under, proto) \

LOCAL_MODULE := xxx.aaa.bbb

LOCAL_MODULE_TAGS := optional

LOCAL_VENDOR_MODULE := true

#LOCAL_PROTOC_OPTIMIZE_TYPE := nano

LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/

include $(BUILD_STATIC_JAVA_LIBRARY)

在 java 层时这么塞数据的:

information.info data = information.info();

data.member = 150;

String buf = new String(information.info.toByteArray(data));

//然后通过 hidl 接口传过去

在 c++层这么解数据的:

info data;

data.ParseFromString(buf);

现在问题是,当我在 info 的 member 赋值 127 以上的数字时,就会出错,c++层解析出来变成 2 万多,127 或以下的值就没有问题。是我在塞数据的时候用错了吗?

(还有一点 proto 文件自动生成的 java 文件是继承的 messagenano,而生成的 c++代码继承的是 messagelite,这两个好像不一样啊)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值