前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenHarmony 移植案例与原理 - XTS子系统之应用兼容性测试套件(1)

OpenHarmony 移植案例与原理 - XTS子系统之应用兼容性测试套件(1)

原创
作者头像
小帅聊鸿蒙
发布2025-06-16 20:37:18
发布2025-06-16 20:37:18
8100
代码可运行
举报
文章被收录于专栏:鸿蒙开发笔记鸿蒙开发笔记
运行总次数:0
代码可运行

本文主要通过实例分析下ACTS应用兼容性测试套件移植案例,以及移植过程中特定的操作的原理。主要讲述的是轻量系统兼容性测试。轻量系统因系统能力限制,兼容性测试在系统初始化阶段进行;并且各设备烧录工具存在差异,导致自动化工具(xDevice工具)无法实现真正的自动适配,因此认证执行方式不对合作伙伴进行限制。流程如下:

  • 步骤1 编译适配:XTS子系统加入到编译组件中,随版本一起编译;
  • 步骤2 本地执行:完成兼容性测试;

1、编译适配XTS子系统

1.1 产品解决方案适配

需要在产品解决方案配置文件中增加增加xts_acts与xts_tools组件定义。下面看几个示例,文件vendor\bestechnic\xts_demo\config.json中的配置片段:

代码语言:c
代码运行次数:0
运行
复制
    {
      "subsystem": "xts",
      "components": [
        { "component": "xts_acts", "features":
          [
            "config_ohos_xts_acts_utils_lite_kv_store_data_path = \"/data\"",
            "enable_ohos_test_xts_acts_use_thirdparty_lwip = true"
          ]
        },
        { "component": "xts_tools", "features":[] }
      ]
    }

文件vendor\goodix\gr5515_sk_xts_demo\config.json中的配置片段:

代码语言:c
代码运行次数:0
运行
复制
      {
        "subsystem": "xts",
        "components": [
          { "component": "xts_acts", "features":
            [
              "config_ohos_xts_acts_utils_lite_kv_store_data_path = \"/data\""
            ]
          },
          { "component": "xts_tools", "features":[] }
         ]
      },

1.2 编译链接

需要通过链接选项指定需要链接的ACTS的部件编译库文件,会使用到 --whole-archive 和 --no-whole-archive这2个ld链接选项。–whole-archive 可以把 在其后面出现的静态库包含的函数和变量输出到动态库,–no-whole-archive 则关掉这个特性。在文件vendor\goodix\gr5515_sk_xts_demo\BUILD.gn中,对ACTS的编译文件进行链接。其中⑴到⑵处的链接选项为编译出的属于ACTS的组件测试库文件。

代码语言:c
代码运行次数:0
运行
复制
    executable("${fw_img_name}.elf") {
    deps = [
        "tests:drivers",
        "tests:fs_test",
        "tests:ohosdemo",
        "tests:shell_test",
        "//build/lite:ohos",
    ]

    ldflags = [
        "-Wl,--whole-archive",
        # "-lfs_test",
        # "-ldrivers_test",
        # "-lapp_hello",
        "-lshell_test",
⑴      "-lhctest",
        "-lmodule_ActsBootstrapTest",
        "-lmodule_ActsWifiIotTest",
        "-lmodule_ActsUtilsFileTest",
        "-lmodule_ActsKvStoreTest",
        "-lmodule_ActsParameterTest",
        "-lmodule_ActsSamgrTest",
        "-lhuks_test_common",
        "-lmodule_ActsHuksHalFunctionTest",
        "-lmodule_ActsDfxFuncTest",
        "-lmodule_ActsUpdaterFuncTest",
⑵      "-lmodule_ActsHieventLiteTest",
        "-Wl,--no-whole-archive",
    ]
    }

在文件vendor\bestechnic\xts_demo\config.json中,需要链接的ACTS部件测试库文件写在了bin_list里的force_link_libs里。

代码语言:c
代码运行次数:0
运行
复制
  "bin_list": [
    {
      "elf_name": "wifiiot",
      "bsp_target_name": "best2600w_liteos",
      "signature": "false",
      "burn_name": "rtos_main",
      "enable": "true",
      "force_link_libs": [
        "bootstrap",
        "abilityms",
        "bundlems",
        "broadcast",
        "hctest",
⑴      "module_ActsParameterTest",
        "module_ActsBootstrapTest",
        "module_ActsDfxFuncTest",
        "module_ActsHieventLiteTest",
        "module_ActsSamgrTest",
⑵      "module_ActsKvStoreTest"
      ]
    },
    .......
  ],
DD一下:欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。
代码语言:erlang
复制
`欢迎大家关注工粽号<程序猿百晓生>,可以了解到以下知识点。`
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

然后在文件device\soc\bestechnic\bes2600\BUILD.gn里组装编译链接选项,相关代码片段如下:

代码语言:c
代码运行次数:0
运行
复制
  # config bin from vendor/bestechnic/<product_name>/config.json
  foreach(bin_file, bin_list) {
        ......

    if (build_enable == "true") {
        ......

        # force link invisible function ,which ar to lib
        ldflags += [ "-Wl,--whole-archive" ]
        foreach(force_link_lib, bin_file.force_link_libs) {
          ldflags += [ "-l${force_link_lib}" ]
        }
        ldflags += [ "-lbsp${bsp_target_name}" ]
        ldflags += [ "-Wl,--no-whole-archive" ]
        ......
    }
  }

在文件vendor_asrmicro\xts_demo\config.json中,存在这样的配置片段。

代码语言:c
代码运行次数:0
运行
复制
    "xts_list": [
      {
        "enable": "true",
        "xts_modules": [
          "ActsKvStoreTest",
          "ActsDfxFuncTest",
          "ActsHieventLiteTest",
          "ActsSamgrTest",
          "ActsParameterTest",
          "ActsWifiServiceTest",
          "ActsWifiIotTest",
          "ActsBootstrapTest"
        ]
      }
    ]

然后,在文件device_soc_asrmicro\asr582x\liteos_m\sdk\BUILD.gn文件中组装编译链接选项。

代码语言:c
代码运行次数:0
运行
复制
  foreach(xts_item, xts_list) {
      xts_enable = xts_item.enable
      if(xts_enable == "true")
      {
        defines = [ "CFG_HARMONY_SUPPORT" ]
        ldflags += [
        "-Llibs",
        "-Wl,--whole-archive",
        "-lhctest",
        "-lbootstrap",
        "-lbroadcast",
        ]
        foreach(xts_module, xts_item.xts_modules) {
        ldflags += [ "-lmodule_${xts_module}" ]
        }
        ldflags += [ "-Wl,--no-whole-archive" ]
      }
  }

在产品解决方案配置文件中增加的bin_list、xts_list这些配置选项都不是config.json中的默认的标准选项。各个方案实现的风格差异比较大,建议使用第一种,写在文件vendor\goodix\gr5515_sk_xts_demo\BUILD.gn中会比较好。另外,需要使用hb命令触发debug版本(非debug版本不会触发测试编译)。

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识;
  • 想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、编译适配XTS子系统
    • 1.1 产品解决方案适配
    • 1.2 编译链接
    • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档