SDK子系统
-
编译so时如何去除符号表
-
运行Native HAP的时候报错
-
cmake中arm64-v8a/armeabi-v7a这层目录的宏定义是什么
-
Native API类似Canvas绘制接口是什么
-
在Native代码中使用OH_LOG_Print打印日志报错
-
如何遍历rawfiles中的文件
-
NAPI有创建文件和创建文件夹的接口吗
编译so时如何去除符号表
适用于:OpenHarmony 3.1 Beta5 API 9
解决措施
-
参见上图路径,在CMakeLists.txt中添加如下代码。
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")
-
在build-profile.json5文件 arguments 项中添加如下参数。
{ "buildOption": { "externalNativeOptions": { "arguments": "-DCMAKE_BUILD_TYPE=Release" } } }
运行Native HAP的时候报错
适用于: OpenHarmony 3.1 Beta5 API 9
问题现象
运行Native HAP,出现以下错误:
-
导入的命名空间报错:Obj is not a valid object
-
报错:install parse profile prop check error
原因分析
未设置本机的ABI编译环境。
解决措施
检查模块根目录下(注意不是工程根目录)的build-profile.json5文件(见下图),如果设备是32位,需要在abiFilters参数中配置armeabi-v7a,如果设备是64位,需要在abiFilters参数中配置arm64-v8a。
代码示例
{ "buildOption": { "externalNativeOptions": { "abiFilters": [ "armeabi-v7a", "arm64-v8a" ], } } }
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 API类似Canvas绘制接口是什么
适用于:OpenHarmony 3.2 Beta5 API 9
解决方案
Native API中的Drawing接口可以提供2D绘制功能,其作用类似Canvas绘制接口。
参考链接
在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的根目录,然后对其进行遍历。
参考文档:
NAPI有创建文件和创建文件夹的接口吗
适用于:OpenHarmony 3.1 Beta5 API 9
解决方案:
NAPI不提供创建文件和创建文件夹的接口,可以直接使用C++创建文件和文件夹的接口。