OpenHarmony开发者论坛
标题:
OpenHarmony 在DevEco中开发Native C++代码时无法使用HiTrace
[打印本页]
作者:
aero
时间:
2024-6-15 17:50
标题:
OpenHarmony 在DevEco中开发Native C++代码时无法使用HiTrace
[md]# 摘要
像Android的Systrace一样,OHOS也有一个HiTrace。但是很多人在下载官方的DevEco中开发Native C++代码是无法使用HiTrace的,本文就是来解决这个问题,并在DAYU200平台上验证成功。文末附上相关文件。
\[toc]
# 无法使用HiTrace的原因
Native C++代码在编译时需要链接到HiTrace的库,但是官方下载的SDK似乎没有。
# 解决方案
解决方案分两步,第一步是为了获取HiTrace库文件,第二步是为了把HiTrace库添加到SDK中。其中,第一步可以跳过。
## 1. 编译OHOS SDK
获取OHOS源码的方法可参考此[CSDN博文](
https://blog.csdn.net/m0_37033731/article/details/124017669
)来完成依赖工具安装、预编译。
然后再运行如下命令,编译SDK。
```shell
./build.sh --product-name ohos-sdk --ccache
```
编译完成后,可在如下路径找到相应的SDK库,有3个库文件,对应不同的架构。
```sh
<源码根目录>/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库](
https://files.cnblogs.com/files/ ... ce.zip?t=1705841221
\&download=true)。接着就要把库文件添加到SDK。
首先我们要确定SDK根目录的路径,DevEco的SDK路径似乎非常混乱,为保险起见,笔者把所有路径里都添加上了HiTrace的库文件。
* 路径1:查看DevEco的Tools->SDK Manager,下两图中标记出来的就是SDK路径1
![975e0b5949f1489d885e9b0846698692~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png](
https://forums-obs.openharmony.c ... a2hi4zohzd0y8xc.png
"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](
https://forums-obs.openharmony.c ... 5vob04s5vvf5zvv.png
"dd6bac151ef74bc38aee434fd4becfc4~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png")
![](
https://p3-juejin.byteimg.com/to ... 0:q75.image#?w=1495
\&h=1030\&s=124532\&e=png\&b=3d4144)
* 路径3: App实际使用的SDK可查看App的DevEco工程根目录下的·`local.properties`文件中的 `hwsdk.dir`:
![1ac531452e984305a6cc065c8ac1a709~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png](
https://forums-obs.openharmony.c ... jzjodqnon6doeyh.png
"1ac531452e984305a6cc065c8ac1a709~tplv-k3u1fbpfcp-jj-mark_0_0_0_0_q75.png")
![](
https://p3-juejin.byteimg.com/to ... 0:q75.image#?w=1097
\&h=512\&s=209192\&e=png\&b=2e2e2e)
对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
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5