SDK使用常见问题
cmake中arm64-v8a/armeabi-v7a这层目录的宏定义是什么
适用于:OpenHarmony 3.1 Beta5 API 9
解决方案
arm64-v8a及armeabi-v7a目录如下所示:
entry
├─ libs
│ ├─ arm64-v8a
│ │ └─ libMyDemo.so
│ └─ armeabi-v7a
│ └─ libMyDemo.so
└─ src
└─ main
└─ cpp
└─ CMakeLists.txt
访问到目录的宏定义为:${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/xxxx.so
CMAKE_CURRENT_SOURCE_DIR:CMakeList.txt文件所在目录。
OHOS_ARCH:设置应用程序二进制接口ABI,类型为 armeabi-v7a、arm64-v8a,默认值是 arm64-v8a。
使用示例
CMakeLists.txt 中添加链接库。
target_link_libraries(entry PUBLIC
libace_napi.z.so
libhilog_ndk.z.so
${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libMyDemo.so
)
在Native代码中使用OH_LOG_Print打印日志报错
适用于:OpenHarmony 3.1 Beta5 API 9
问题现象
在Native代码中使用OH_LOG_Print打印日志,上报错误:undefined symbol: OH_LOG_Print
原因分析
缺少链接库文件。
解决措施
打开CMakeLists.txt文件,在target_link_libraries最后追加libhilog_ndk.z.so。
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(entry PUBLIC
libace_napi.z.so
libhilog_ndk.z.so
)
如何遍历rawfiles中的文件
适用于:OpenHarmony 3.1 Beta5 API 9
解决方案:
使用Native API中的OH_ResourceManager_OpenRawDir()方法获取到rawfile的根目录,然后对其进行遍历。
参考文档: