HarmonyOS 鸿蒙Next 对于打包生成的so和d.ts的路径配置问题 HarmonyOS 鸿蒙Next:目前so在编译生成路径下通过cachefile引用,其他人提供的so和d.ts文件在何文件中配置和引用路径
HarmonyOS 鸿蒙Next 对于打包生成的so和d.ts的路径配置问题
HarmonyOS 鸿蒙Next:目前so在编译生成路径下通过cachefile引用,其他人提供的so和d.ts文件在何文件中配置和引用路径
对于打包生成的so和d.ts, 目前so是在编译生成的路径下面通过cachefile进行路径引用, 对于其他人提供的so和d.ts文件,在什么文件里进行相关路径的配置和引用呢
使用第三方SO库以导入OpenCV和MNN的SO库为例
1、将MNN和Opencv的so文件(包括.407文件),放入模块下libs目录对应的版本(arm64-v8a和armeabi-v7a)
entry/libs/arm64-v8a/xxx.so
2、配置模块目录下的build-profile.json5的buildOption字段,增加abiFilters字段:
"buildOption": {
"externalNativeOptions": {
"abiFilters": [
"armeabi-v7a",
"arm64-v8a"
]
}
}
3、在CMakeLists.txt所在目录,创建’thirdPart’目录,然后将MNN和opencv的头文件放入该目录(头文件在提供的压缩包的include目录里):
src/main/cpp/thirdPart/MNN/xxxx.hpp
src/main/cpp/thirdPart/opencv/opencv4/opencv2/xxxx.hpp
4、修改CMakeLists.txt文件,增加以下内容:
//实际打包内容为lib中所有的so文件,当前开发测试阶段可以先放入所有的so; 后续有裁减包大小的诉求时, 根据你们使用的so库,我们会提供对应的方案
// 链接需要的so库至当前的模块 可引入需要的模块
// 'yitusdk' 表示 模块名称;${CMAKE_CURRENT_SOURCE_DIR}表示CMakeLists所在目录;${OHOS_ARCH}表示构建的对应版本(arm64-v8a等)
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libMNN.so)
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libopencv_core.so)
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libopencv_imgproc.so)
//引入对应的头文件 实际打包头文件不会影响包大小
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart)
//以下根据实际情况,某个库,如opencv,根据include时的错误信息,可以写多条
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/opencv/opencv4)
target_include_directories(yitusdk PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdPart/opencv)
补充说明: 放置so文件时,注意对应的407也需要一同放入(由于windows环境的特殊)
上面是引用so的操作步骤。
更多关于HarmonyOS 鸿蒙Next 对于打包生成的so和d.ts的路径配置问题 HarmonyOS 鸿蒙Next:目前so在编译生成路径下通过cachefile引用,其他人提供的so和d.ts文件在何文件中配置和引用路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS 鸿蒙Next中,针对打包生成的so和d.ts文件的路径配置问题,具体处理方式如下:
对于编译生成的so文件,通常这些文件会在编译过程中自动放置在指定的输出目录下。如果需要通过cachefile引用,确保cachefile中正确配置了so文件的输出路径。对于从外部引入的so文件,你需要在项目的配置文件(如build.gradle或其他构建脚本)中指定这些so文件的路径。这通常涉及到在相应的模块配置中添加sourceSets或类似设置,指定libs目录包含这些so文件。
对于d.ts文件(TypeScript声明文件),这些文件用于TypeScript项目中对JavaScript库的类型定义。在HarmonyOS项目中,如果需要使用到这些d.ts文件,你需要在tsconfig.json或其他TypeScript配置文件中配置include或typeRoots选项,以包含d.ts文件所在的目录。
确保这些配置正确无误后,构建系统会在打包过程中自动处理这些文件的引用。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,