HarmonyOS Native创建的buffer在ArkTS侧应该使用什么类型定义

1、如何在ArkTS侧定义native创建的buffer,https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-ndk-58-V5

要求使用ArrayBuffer类型,对于上层ArkTS传递到C++依旧使用ArrayBuffer会导致napi_get_buffer_info napi_is_buffer接口调用失败。

2、如果确实不支持buffer,那么native侧的NAPI相关的接口是否应该移除?

3、如果只是单纯的将buffer和arraybuffer认为是一致的,是否与N-API原始的定义不相符?

HarmonyOS
2025-01-09 13:44:46
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

napi侧的buffer在ArkTS侧使用ArrayBuffer接收,ArkTs的ArrayBuffer在napi侧可以使用buffer/arrayBuffer接收。

ArkTSbuffer -> napi buffer示例:

// ArkTs侧
let a = buffer.from("test");
callback.Test(a);
// napi侧接收
void Test(napi_value value) {
  Buffer *bufferTest = new Buffer();
  napi_env env = aki::Binding::GetScopedEnv();
  napi_value offset;
  napi_get_named_property(env, value, "byteOffset", &offset);
  napi_value buffer;
  napi_get_named_property(env, value, "buffer", &buffer);
  napi_value length;
  napi_get_named_property(env, value, "length", &length);
  bool res;
  napi_is_arraybuffer(env, buffer, &res);
  AKI_LOG(INFO) << "napi_is_arraybuffer: " << res;
  bool res1;
  napi_is_buffer(env, buffer, &res1);
  AKI_LOG(INFO) << "napi_is_buffer: " << res1;
  // 获取Buffer的信息
  napi_status stutas = napi_get_buffer_info(env, buffer, &bufferTest->buffer, &bufferTest->size);
  napi_get_value_int32(env, offset, &bufferTest->offset);

  AKI_LOG(INFO) << "test " << bufferTest->buffer << " size:" << bufferTest->size;
}
分享
微博
QQ
微信
回复
2025-01-09 17:04:25
相关问题
Native释放ArkTS对象方法
898浏览 • 1回复 待解决
arktshashmap转为native
1323浏览 • 1回复 待解决
Native调用ArkTS全局普通方法
1440浏览 • 1回复 待解决
native创建file并保存进沙箱路径
1450浏览 • 1回复 待解决
Native创建线程是否有限制
2485浏览 • 1回复 待解决
native如何跟ArkTS子线程通信
366浏览 • 1回复 待解决
Native调用ArkTS类函数
1443浏览 • 1回复 待解决
如何在Native释放ArkTS对象
2726浏览 • 1回复 待解决
ArkTSNative如何进行map数据交互
2594浏览 • 1回复 待解决
ArkTSNative分别如何动态加载SO库
2986浏览 • 1回复 待解决
HarmonyOS Map类型应该如何使用
200浏览 • 1回复 待解决
Native进行跨模块加载
1105浏览 • 1回复 待解决
native如何使用静态方法
997浏览 • 1回复 待解决