Android基于JNA集成调用第三方C/C++的so库

这篇具有很好参考价值的文章主要介绍了Android基于JNA集成调用第三方C/C++的so库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android基于JNA集成调用第三方C/C++的so库

(1)引入JNA。

基于JNA开源项目,JNA对Android NDK的封装,简化Android层JNI集成调用C/C++的so库。

GitHub - java-native-access/jna: Java Native AccessJava Native Access. Contribute to java-native-access/jna development by creating an account on GitHub.https://github.com/java-native-access/jna

在Android的app的build.gradle添加引用:

implementation group: 'net.java.dev.jna', name: 'jna', version: '5.13.0'

这里可以直接添加JNA最新版本:

https://mvnrepository.com/artifact/net.java.dev.jna/jnahttps://mvnrepository.com/artifact/net.java.dev.jna/jna

在app的build.gradle的android块内设置jniLibs.srcDir:

    sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }

(2)在 jna/dist at master · java-native-access/jna · GitHub  这里下载 android-aarch64.jar

Android基于JNA集成调用第三方C/C++的so库

因为我这里基于arm64-v8a架构。如果是armv7,选择相应的jar包。

下载后,解压android-aarch64.jar,里面是libjnidispatch.so文件,把这个文件放入app\libs\arm64-v8a下面

Android基于JNA集成调用第三方C/C++的so库

(3)以上准备工作完成后,开始集成第三方so库。

把第三方so库放入app\libs\arm64-v8a下

Android基于JNA集成调用第三方C/C++的so库

(4)开始调用第三方so库中的C/C++函数。写上层Java代码。

Android基于JNA集成调用第三方C/C++的so库

 注意Native.load()里面对应的so库名,so库名一般以libxxx.so开头,但是在Native.load里面,不要带上lib和结尾的.so后缀名,即去掉开头lib和结尾的.so。

在CLibrary里面定义的接口函数,即为libxxx.so第三方库里面完成的函数。

(5)在Android层直接使用:

Android基于JNA集成调用第三方C/C++的so库

Android基于JNA加载第三方.so库报错:java.lang.UnsatisfiedLinkError Native library (com/sun/jna/android-aarch64/l_zhangphil的博客-CSDN博客基于Windows平台,Android NDK(JNI)开发技术》【摘要】本文介绍如何基于Windows平台,在Eclipse中使用Android NDK技术实现“Android平台上的JNI ( Java Native Interface ) ”开发。新增的getStringCpp()是新增的一个方法,因为没有实现所以报红。解压后,里面是一个libjnidispatch.so,把libjnidispatch.so放到Android项目的libs\arm64-v8a\里面即可。https://blog.csdn.net/zhangphil/article/details/130400296文章来源地址https://www.toymoban.com/news/detail-433609.html

到了这里,关于Android基于JNA集成调用第三方C/C++的so库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第三方应用调用系统SO 库失败Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library

    在Android 31平台,尝试使用第三方应用调用系统SO 库,会报如下的错误 Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library \\\" /system/lib64/XXX.so \\\" needed or dlopened by \\\"/apex/com.android.art/lib64/libnativeloader.so\\\" is not accessible for the namespace \\\"classloader-namespace\\\" 大体原因是,Android N 开始限制 第三方

    2024年02月12日
    浏览(54)
  • Android 13.0 添加自定义服务,并生成jar给第三方app调用

    在13.0系统产品定制化开发中,由于需要新增加自定义的功能,所以要增加自定义服务,而app上层通过调用自定义服务,来调用相应的功能,所以系统需要先生成jar,然后生成jar 给上层app调用,接下来就来分析实现的步骤,然后来实现相关的功能 从而来实现所需要的功能 添加

    2024年02月05日
    浏览(52)
  • Android 14.0 添加自定义服务,并生成jar给第三方app调用

    在14.0系统ROM产品定制化开发中,由于需要新增加自定义的功能,所以要增加自定义服务,而app上层通过调用自定义服务,来调用相应的功能,所以系统需要先生成jar,然后生成jar 给上层app调用,接下来就来分析实现的步骤,然后来实现相关的功能 从而来实现所需要的功能 在

    2024年04月10日
    浏览(37)
  • 鸿蒙使用第三方SO库

    使用第三方SO库以导入OpenCV和MNN的SO库为例 1、将MNN和Opencv的so文件(包括.407文件),放入模块下libs目录对应的版本(arm64-v8a和armeabi-v7a) 2、配置模块目录下的build-profile.json5的buildOption字段,增加abiFilters字段: 3、在CMakeLists.txt所在目录,创建\\\"thirdPart”目录,然后将MNN和opencv的头文件

    2024年01月19日
    浏览(25)
  • Forest-声明式HTTP客户端框架-集成到SpringBoot实现调用第三方restful api并实现接口数据转换

    声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层, 是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。 通过在接口上声明注解的方式配置HTTP请求接口。 官网: Forest   代码地址: forest: 声明式HTTP客户端API框架,让

    2024年02月04日
    浏览(99)
  • 鸿蒙加载第三方动态链接库(.so)文件

    在没有正确引用so文件情况下会报出上述错误,正确姿势应该如下 在Android的写法是在main目录下创建jniLibs,然后.so文件复制进去即可,但是在鸿蒙里面要在libs/内放置arm64-v8a和armeabi-v7a两个文件夹的so文件,然后在build.gradle文件 加多一个.so的描述 即可使用

    2024年02月13日
    浏览(27)
  • 基于Docker部署OpenLDAP,同时集成第三方系统(GitLab、JIRA、Nexus、Harbor)

    这里可以了解什么是LDAP,为什么要用它 下面通过docker-compose一键部署openLDAP、phpldapadmin和self-service-password。(通过K8s部署的方式大同小异) 准备open-ldap的docker-compose文件 执行 docker-compose up 命令,就可以一键部署openldap、phpldapadmin(他就是openldap的操作页面)、self-service-passw

    2023年04月08日
    浏览(28)
  • 基于ETLCloud的自定义规则调用第三方jar包实现繁体中文转为简体中文

    前面曾体验过通过零代码、可视化、拖拉拽的方式快速完成了从 MySQL 到 ClickHouse 的数据迁移,但是在实际生产环境,我们在迁移到目标库之前还需要做一些过滤和转换工作;比如,在诗词数据迁移后,发现原来 MySQL 中的诗词数据都是繁体字,这就导致在直接迁移到 ClickHous

    2024年02月11日
    浏览(31)
  • 鸿蒙Native输出so动态库,并提供给第三方导入使用

    DevEco Studio版本:4.0.0.600 API:9 最近在学习鸿蒙的Native输出so动态库,下面就给大家分享下我的学习心得及在实现过程中遇到的问题。 实现需求:通过so库输出文本内容 “你好,鸿蒙!” 参考资料: OpenHarmony Native API 1、创建Native工程 File--New--create Project,选择Native C++项目 正常

    2024年04月10日
    浏览(28)
  • 基于opencv第三方视觉库,通过内网IP调用手机摄像头,实现人脸识别与图形监测

    OpenCV 是一个开源的计算机视觉库,OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。 OpenCV 库包含从计算机视觉各个领域衍生出来的 500 多个函

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包