HarmonyOS 鸿蒙Next 编译的C++ so库中如何在Dev中打印日志

HarmonyOS 鸿蒙Next 编译的C++ so库中如何在Dev中打印日志 在鸿蒙应用中集成了C++ so库文件,需要将库文件中的日志在Dev Studio中打印出来,否则so库就像黑盒一样无法定位问题,目前使用的C++printf无法在Dev中看到,请问有什么好办法

6 回复

和android一致,使用系统的日志库hilog,默认NDK开发应该会自动链接这个库。具体如何log看hilog的文档就知道了

更多关于HarmonyOS 鸿蒙Next 编译的C++ so库中如何在Dev中打印日志的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我们系统的编写人员是用hilog,但是具体怎么引入啥的你得去看鸿蒙源码,我只是个写应用的。

我引用的是第三库C++库,里面有很多printf的调试日志。用deveco中使用napi调用第三方库,没法看日志了,这个目前解不了?

我找到了这个教程 ,可以使用hilog打印.so里的C++的log

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/hilog-guidelines-ndk-V13

鸿蒙无人?

在HarmonyOS鸿蒙Next中,编译C++ so库时,可以使用hilog库来打印日志。hilog是鸿蒙系统提供的一个日志工具,支持不同级别的日志输出。以下是一个简单的示例,展示如何在C++代码中使用hilog打印日志:

  1. 首先,确保在BUILD.gn文件中添加了对hilog库的依赖:

    deps = [
      "//foundation/communication/interfaces/innerkits/hilog:libhilog",
    ]
    
  2. 在C++代码中引入hilog头文件:

    #include "hilog/log.h"
    
  3. 使用hilog打印日志。hilog提供了不同级别的日志输出方法,如HILOG_DEBUGHILOG_INFOHILOG_WARNHILOG_ERROR等。以下是一个简单的示例:

    #include "hilog/log.h"
    
    static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, 0xD001800, "MY_TAG"};
    
    void exampleFunction() {
        HILOG_DEBUG(LABEL, "This is a debug log.");
        HILOG_INFO(LABEL, "This is an info log.");
        HILOG_WARN(LABEL, "This is a warning log.");
        HILOG_ERROR(LABEL, "This is an error log.");
    }
    
  4. 编译并运行代码,日志将输出到系统的日志系统中,可以通过hilog命令行工具查看:

    hilog
    

通过以上步骤,你可以在鸿蒙Next的C++ so库中使用hilog打印日志。

回到顶部