android - 使用 JNA 访问 .so 文件搜索本机库 (libjnidispatch.so) 时出错
问题描述
请注意,这个问题是我前段时间在这里提出的另一个问题的后续问题。
我想达到什么目标?
我想使用 JNA(带有 Android Studio 的 4.5.2 版)来实现以下目标:
- 首先,我想从给定的 .so 文件中获取所有可调用函数的列表。
- 一旦我有了这个列表,我想调用一个特定的函数
到目前为止我做了什么?
到目前为止,我的测试应用程序的“MainActivita.java”文件的代码如下所示:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String MyLibraryString = MyLibrary.Instance.toString();
}
public interface MyLibrary extends Library
{
MyLibrary Instance = (MyLibrary ) Native.loadLibrary("nameOfMyLibraryWithoutSoExtension", MyLibrary.class);
}
}
我面临什么问题?
我曾经收到一条错误消息,指出在我的 Android 设备上找不到我的库,但在将其放入“jniLibs”子文件夹后,我的应用似乎能够检测到它。不幸的是,我现在收到错误消息
java.lang.UnsatisfiedLinkError: 在资源路径 (.) 中找不到本机库 (com/sun/jna/android-aarch64/libjnidispatch.so)
每当我尝试在我的设备上启动应用程序时。我已经尝试从 JNA.jar 文件中提取文件“libjnidispatch.so”并将其放在其各自的子文件夹中(如此处所述),但这不起作用。
我的应用程序的子文件夹“app\src\main\jniLibs”的文件夹结构如下所示:
app\src\main\jniLibs\arm64-v8a\myLibrary.so
...
app\src\main\jniLibs\arm64-v8a\libjnidispatch.so
app\src\main\jniLibs\armeabi\myLibrary.so
...
app\src\main\jniLibs\armeabi\libjnidispatch.so
app\src\main\jniLibs\armeabi-v7a\myLibrary.so
...
app\src\main\jniLibs\armeabi-v7a\libjnidispatch.so
app\src\main\jniLibs\mips\myLibrary.so
...
app\src\main\jniLibs\mips\libjnidispatch.so
app\src\main\jniLibs\mips64\myLibrary.so
...
app\src\main\jniLibs\mips64\libjnidispatch.so
app\src\main\jniLibs\x86\myLibrary.so
...
app\src\main\jniLibs\x86\libjnidispatch.so
app\src\main\jniLibs\x86_64\myLibrary.so
...
app\src\main\jniLibs\x86_64\libjnidispatch.so
任何帮助将不胜感激。
解决方案
推荐阅读
- node.js - 节点服务器和 Nuxt/Vue 客户端之间的通配符子域信息共享
- csv - Redshift 中的 COPY CSV 命令是否按标题中定义的顺序加载?
- php - [Laravel]: How do I dependency inject into an abstract class extended by other classes(jobs)
- javascript - Storybook 无法解析从根目录后面的任何位置导入的目录中的 JSX
- arrays - 将数据从响应转换为数组
- google-cloud-functions - Google Cloud 功能向 GKE 上托管的应用发送调用
- css - 整个网站的网格区域使用
- wordpress - WordPress WooCommerce REST API
- php - 注册表中的 OTP 集成
- swift - 一个 VC 中的两个表视图