前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android下使用JNA

android下使用JNA

作者头像
10km
发布2020-06-09 08:08:02
2.1K0
发布2020-06-09 08:08:02
举报
文章被收录于专栏:10km的专栏10km的专栏

jna在windows和linux下使用都很简单只要导入jna.jar就可以,maven中如下引入就可以了

代码语言:javascript
复制
		<dependency>
			<groupId>net.java.dev.jna</groupId>
			<artifactId>jna</artifactId>
			<version>5.5.0</version>
		</dependency>

但是在android下要使用jna可就没这么简单了,因为jna.jar中没有android平台所需要动态库libjnidispatch.so,程序运行时会报如下的错误:

Caused by: java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/android-arm/libjnidispatch.so) not found in resource path (.)

在这里插入图片描述
在这里插入图片描述

打开jna-5.5.0.jar,的确在jar包中找不到com/sun/jna/android-arm/这个文件夹

在这里插入图片描述
在这里插入图片描述

于是我在google上找了一些关于android下使用jna的文章,找到了解决方案: jna项目的确没有把android平台的动态库libjnidispatch.so打到jna.jar包(到少到目前最新的5.5.0版本都是如此,不明白为什么要这样)。但是它以附加jar包的形式额外提供了anndroid平台在不同硬件架构下的对应的动态库libjnidispatch.so.我们可以根据自己的项目的平台下载这些这些额外的动态库,加到自己的android项目就解决问题了。

具体怎么做呢? 首先要找到android平台的动态库libjnidispatch.so。 去jna仓库的dist文件夹(以5.5.0版本为例): https://github.com/java-native-access/jna/tree/5.5.0/dist

如果你访问github较慢,也可以使用国内码云的仓库镜像(https://gitee.com/mirrors/jna/tree/5.5.0/dist)

如下图找到对应的平台的jar包(本文以常用的armv7平台为例)。下载这个jar包

在这里插入图片描述
在这里插入图片描述

下载指定平台jar包(以armv7为例)解开jar包就可以看到libjnidispatch.so就在里面:

在这里插入图片描述
在这里插入图片描述

把它复制到你的android studio项目如下位置

${YOU_PROJECT_FOLDER}\app\src\main\jniLibs\armeabi-v7a\libjnidispatch.so

就可以了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档