HarmonyOS har包开发及测试

需要开发一个har包并进行测试,包的内容为引动第三方so动态库,是否有开发指引和demo可以提供?是否有har测试demo可以提供?

HarmonyOS
2024-12-19 16:36:38
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

参考demo:

1、添加减法接口sub。

//  library\src\main\cpp\hello.cpp
static napi_value Sub(napi_env env, napi_callback_info info) {
  size_t requireArgc = 2;
  size_t argc = 2;
  napi_value args[2] = {nullptr};

  napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);

  napi_valuetype valuetype0;
  napi_typeof(env, args[0], &valuetype0);

  napi_valuetype valuetype1;
  napi_typeof(env, args[1], &valuetype1);

  double value0;
  napi_get_value_double(env, args[0], &value0);

  double value1;
  napi_get_value_double(env, args[1], &value1);

  napi_value sum;
  napi_create_double(env, value0 - value1, &sum);

  return sum;
}
//  library\src\main\cpp\hello.cpp
EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports)
{
  napi_property_descriptor desc[] = {
  {"add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr},
{"sub", nullptr, Sub, nullptr, nullptr, nullptr, napi_default, nullptr}
};
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
return exports;
}
EXTERN_C_END

2、以导出liblibrary.so的加减法接口add和sub为例。

// library/src/main/ets/utils/nativeTest.ts
import native from 'liblibrary.so'

export function nativeAdd(a: number, b: number) {
  let result: number = native.add(a, b);
  return result;
}

export function nativeSub(a: number, b: number) {
  let result: number = native.sub(a, b);
  return result;
}

3、HAR对外暴露的接口,在Index.ets导出文件中声明如下所示:

// library/Index.ets
export { nativeAdd, nativeSub } from './src/main/ets/utils/nativeTest'

4、引用本地HAR包,有如下两种方式:

方式一:在Terminal窗口中,执行如下命令进行安装,并会在oh-package.json5中自动添加依赖。

ohpm install ./library/build/default/outputs/default/library.har

方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:

"dependencies": {     "library": "file:../library/build/default/outputs/default/library.har"   }

5、通过import引用HAR导出的native方法,示例如下所示:

// entry/src/main/ets/pages/Index.ets
import { nativeAdd, nativeSub } from 'library'

@Entry
@Component
struct Index {

  build() {
    Row() {
      Column() {
        Button('ArkTS call C++')
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
            hilog.info(0x0000, 'testTag', 'Test NAPI 2 + 3 = %{public}d', nativeAdd(2, 3));
            hilog.info(0x0000, 'testTag', 'Test NAPI 2 - 3 = %{public}d', nativeSub(2, 3));
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
分享
微博
QQ
微信
回复
2024-12-19 18:38:54
相关问题
HarmonyOS 测试,如何打出测试
1387浏览 • 1回复 待解决
HarmonyOS har能否引用tgz
1284浏览 • 1回复 待解决
HarmonyOS 线上怎么测试
1358浏览 • 1回复 待解决
HarmonyOS 怎么打测试
1612浏览 • 1回复 待解决
HarmonyOS har体积增大
1032浏览 • 1回复 待解决
HarmonyOS har混淆规则
1238浏览 • 1回复 待解决
HarmonyOS har依赖问题
1754浏览 • 1回复 待解决
HarmonyOS har动态依赖
1058浏览 • 1回复 待解决
HarmonyOS HAR HAP问题
1227浏览 • 1回复 待解决
HarmonyOS har混淆问题
1387浏览 • 1回复 待解决
HarmonyOS har报错
1479浏览 • 1回复 待解决
HarmonyOS 如何build har
1027浏览 • 1回复 待解决
HarmonyOS 提交测试,提示999
1228浏览 • 1回复 待解决
HarmonyOS har内部路由跳转
841浏览 • 1回复 待解决
HarmonyOS har生成问题
2123浏览 • 1回复 待解决