• Lv0
    粉丝1

积分18 / 贡献0

提问3答案被采纳0文章6

[经验分享] OpenHarmony 在DevEco中开发Native C++代码时无法使用HiTrace 原创

aero 显示全部楼层 发表于 2024-6-15 17:50:12

摘要

像Android的Systrace一样,OHOS也有一个HiTrace。但是很多人在下载官方的DevEco中开发Native C++代码是无法使用HiTrace的,本文就是来解决这个问题,并在DAYU200平台上验证成功。文末附上相关文件。

[toc]

无法使用HiTrace的原因

Native C++代码在编译时需要链接到HiTrace的库,但是官方下载的SDK似乎没有。

解决方案

解决方案分两步,第一步是为了获取HiTrace库文件,第二步是为了把HiTrace库添加到SDK中。其中,第一步可以跳过。

1. 编译OHOS SDK

获取OHOS源码的方法可参考此CSDN博文来完成依赖工具安装、预编译。

然后再运行如下命令,编译SDK。

./build.sh --product-name ohos-sdk --ccache

编译完成后,可在如下路径找到相应的SDK库,有3个库文件,对应不同的架构。

<源码根目录>/out/sdk/sdk-native/os-irrelevant/sysroot/usr/lib/aarch64-linux-ohos/libhitrace_ndk.z.so

<源码根目录>/out/sdk/sdk-native/os-irrelevant/sysroot/usr/lib/arm-linux-ohos/libhitrace_ndk.z.so

<源码根目录>/out/sdk/sdk-native/os-irrelevant/sysroot/usr/lib/x86_64-linux-ohos/libhitrace_ndk.z.so

还有一个头文件

<源码根目录>/out/sdk/sdk-native/os-irrelevant/sysroot/usr/include/hitrace/trace.h

2. 把HiTrace库添加到SDK中

通过[编译OHOS SDK](#1. 编译OHOS SDK)获取到HiTrace的库文件和头文件,也可尝试直接使用我为标准版OHOS编译的HiTrace库。接着就要把库文件添加到SDK。

首先我们要确定SDK根目录的路径,DevEco的SDK路径似乎非常混乱,为保险起见,笔者把所有路径里都添加上了HiTrace的库文件。

  • 路径1:查看DevEco的Tools->SDK Manager,下两图中标记出来的就是SDK路径1

    975e0b5949f1489d885e9b0846698692~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

  • 路径2:查看DevEco的Tools->SDK Manager,下两图中标记出来的就是SDK路径2

    dd6bac151ef74bc38aee434fd4becfc4~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

  • 路径3: App实际使用的SDK可查看App的DevEco工程根目录下的·local.properties文件中的 hwsdk.dir:

    1ac531452e984305a6cc065c8ac1a709~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png

对SDK路径1,3个库文件和头文件要复制粘贴到如下三个路径:

<SDK路径1>\openharmony\<使用的API版本号>\native\sysroot\usr\lib\aarch64-linux-ohos\libhitrace_ndk.z.so
<SDK路径1>\openharmony\<使用的API版本号>\native\sysroot\usr\lib\arm-linux-ohos\libhitrace_ndk.z.so
<SDK路径1>\openharmony\<使用的API版本号>\native\sysroot\usr\lib\x86_64-linux-ohos\libhitrace_ndk.z.so
<SDK路径1>\openharmony\<使用的API版本号>\native\sysroot\usr\include\hitrace\trace.h

对SDK路径2,3个库文件和头文件要复制粘贴到如下三个路径:

<SDK路径2>\<使用的API版本号>\native\sysroot\usr\lib\aarch64-linux-ohos\libhitrace_ndk.z.so
<SDK路径2>\<使用的API版本号>\native\sysroot\usr\lib\arm-linux-ohos\libhitrace_ndk.z.so
<SDK路径2>\<使用的API版本号>\native\sysroot\usr\lib\x86_64-linux-ohos\libhitrace_ndk.z.so
<SDK路径2>\<使用的API版本号>\native\sysroot\usr\include\hitrace\trace.h

对SDK路径3,需要看看其路径下目录结构是类似于SDK路径1还是2,并按对应的方式操作。

需要注意的是,复制头文件时,若无hitrace文件夹,自己建一个就行。

monica-code-tools

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部