OpenHarmony 在DevEco中开发Native C++代码时无法使用HiTrace 原创

sq595ce3d170bb9
发布于 2024-1-22 20:57
浏览
0收藏

摘要

像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

    OpenHarmony 在DevEco中开发Native C++代码时无法使用HiTrace-鸿蒙开发者社区

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

    OpenHarmony 在DevEco中开发Native C++代码时无法使用HiTrace-鸿蒙开发者社区

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

    OpenHarmony 在DevEco中开发Native C++代码时无法使用HiTrace-鸿蒙开发者社区

对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文件夹,自己建一个就行。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
    相关推荐