当前位置: 首页 > news >正文

鸿蒙使用第三方SO库

一、示例:

使用第三方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":[
"arneabi-v7a",
"arn64-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所在目录;${0HOS_ARCH}表示构建的对应版本(arm64-v8a等) 
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_ARCH}/1ibMNN.so)
target_link_libraries (yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_ARCH}/libopencv_core.so) 
target_link_libraries(yitusdk PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${0HOS_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环境的特殊)

二、其他补充说明

鸿蒙只能使用基于napi编译的so,HarmonyOS的应用必须用js来桥接native。需要使用ace_napi仓中提供的napi接口来处理js交互。

  1. 使用鸿蒙提供的NDK直接开发so库,可以直接使用
  2. 如果是其他环境下编译的so库需要封装Napi调用SO库

Node-API开发规范

Native API在应用工程中的使用指导

基于NDK编译三方库

相关文章:

鸿蒙使用第三方SO库

一、示例: 使用第三方SO库以导入OpenCV和MNN的SO库为例 1、将MNN和Opencv的so文件(包括.407文件),放入模块下libs目录对应的版本(arm64-v8a和armeabi-v7a) entry/libs/arm64-v8a/xxx.so2、配置模块目录下的build-profile.json5的buildOption字段&…...

宝塔FTP文件传输服务结合cpolar内网穿透实现远程连接本地服务

⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 文章目录 ⛳️ 推荐1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固…...

【ARMv8M Cortex-M33 系列 7.4 -- 如何使能 usagefault | memmange fault | bus fault 中断】

请阅读【嵌入式开发学习必备专栏 之 ARM Cortex-Mx专栏】 文章目录 背景异常使能配置 背景 由于文章【ARMv8M Cortex-M33 系列 7.2 – HardFault 问题定位 1】 中提到了HardFault 的发生是由于其它异常所升级导致的,所以就需要调查下如何是能其它异常中断。 异常使…...

Android Studio安卓开发--ListView学习整理

ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。 1.ListView的简单用法 (1)activity_main.xml布局中加入ListView控件:(先占满整个布局的空间)…...

hyperf 和 laravel、lumen防止xss攻击中间件封装

hyperf 防止xss攻击自定义中间件封装 <?phpdeclare(strict_types1);namespace App\Middleware;use Psr\Container\ContainerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Message\ServerRequestInterface;…...

flask web 学习之用户认证与会话管理

文章目录 一、安装及初始化二、设置用户加载回调函数三、定义User类四、实现登陆操作五、自定义登陆过程六、使用请求加载器自定义登录七、匿名用户功能八、记住我功能 Flask-Login是一个用于处理用户认证和会话管理的Flask插件。它简化了在Flask应用程序中实现用户登录、登出以…...

更改wpf原始默认按钮的样式

样式 代码 <Window x:Class"WpfApp4.Window1"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/2008…...

【协议】HTTP、HTTPS和HTTP2.0学习总结

1. TCP/IP四层协议 记得大学学网络课程的时候&#xff0c;学的都是OSI/RM七层协议&#xff0c;应用层 -> 表示层 -> 会话层 -> 传输层->网络层->数据链路层->物理层&#xff0c;当时学的时候&#xff0c;感觉太抽象了&#xff0c;学得个一知半解。大脑在接收…...

[数据结构]顺序表

1、顺序表的概念及结构 1.1 线性表 线性表&#xff08; linear list &#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#…...

北斗卫星为野外科考人员提供安全保障

北斗卫星为野外科考人员提供安全保障 自第二次青藏高原综合科学考察研究启动以来&#xff0c;青海不断提升科考服务保障能力&#xff0c;推动科考全程信息化&#xff0c;有效促进科考成果转化。 为保障科考人员的人身安全&#xff0c;青海省青藏科学考察服务中心开发了基于北…...

Linux的一些快捷键(hot keyboard)

Ctrl Alt t&#xff1a;打开bash&#xff08;就是命令框窗口&#xff09; Ctrl Alt F3~F6&#xff1a;打开tty终端&#xff08;纯命令行终端&#xff0c;每个Linux发行版不相同&#xff0c;我的是Ubuntu20版&#xff09; Alt F4&#xff1a;关闭当前窗口&#xff08;Windo…...

Charles将证书安装到系统的方法(adb)

基本情况参考此帖&#xff1a;Charles 安卓抓包 unknown 和证书无效的解决方案&#xff08;无需改代码&#xff09;_client ssl handshake failed: an unknown issue occu-CSDN博客 此解决方案仅适用于已root设备默认已经在电脑上安装并配置了Charles&#xff0c;安卓手机也下载…...

git 常用指令 (先收藏再说)

Git Git是一种分布式版本控制系统&#xff0c;用于记录一个或若干个文件内容的变化&#xff0c;以便查阅和回溯。 它的工作原理可以概括为以下几点&#xff1a; 工作区&#xff08;Workspace&#xff09;&#xff1a;这是你在电脑上看到的目录&#xff0c;工作区是你用来修改文…...

2024问题汇总

2024问题汇总 Linux1.df-h / df -i 命令2.为多网卡Linux云服务器配置策略路由 Windows1.快速进入控制面板 网络连接指令 Linux 1.df-h / df -i 命令 df -h / df -i 都表示查看磁盘空间使用信息 如果遇到磁盘快满的情况&#xff0c;用这两个命令区别如下 df -h 是去删除比较大 …...

爬虫(学习笔记)

python爬虫 一、Python基础回顾变量类型其他操作面向对象编程 二、爬虫流程HTTP协议HTML爬虫demo01爬虫demo02 学习资料 Python爬虫 爬虫实战案例 AI学堂爬虫教学 一、Python基础回顾 变量类型 可变类型&#xff1a;可以进行添加、修改、删除 &#xff08;列表、字典…&#x…...

让业务满意的性能测试报告模板应该是怎样的?

前言 先前在北京出差&#xff0c;和同事聊到了一个关于流量网关如何进行性能验证的需求&#xff0c;当时专门与同事进行了一番讨论&#xff0c;后面写了一篇相关文章。 结果没过多久同事找到我&#xff0c;希望我帮他们写一份给到业务团队的性能测试报告&#xff0c;原因是业…...

高防IP如何保护服务器

首先我们要知道什么是高防IP~ 高防IP是指高防机房所提供的ip段&#xff0c;主要是针对互联网服务器遭受大流量DDoS攻击时进行的保护服务。高防IP是目前最常用的一种防御DDoS攻击的手段&#xff0c;用户可以通过配置DDoS高防IP&#xff0c;将攻击流量引流到高防IP&#xff0c;防…...

C++提高编程——STL:string容器、vector容器

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…...

three.js从入门到精通系列教程004 - three.js透视相机(PerspectiveCamera)滚动浏览全景大图

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程004 - three.js透视相机&#xff08;PerspectiveCamera&#xff09;滚动浏览全景大图</title><script src"js/three.js"&g…...

Gradle 笔记

Gradle依赖管理&#xff08;基于Kotlin DSL&#xff09; **注意&#xff1a;**如果不是工作原因或是编写安卓项目必须要用Gradle&#xff0c;建议学习Maven即可&#xff0c;Gradle的学习成本相比Maven高很多&#xff0c;而且学了有没有用还是另一回事&#xff0c;所以&#xff…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...