代码之家  ›  专栏  ›  技术社区  ›  Hagbard

使用JNA访问.so文件搜索本机库(libjnidispatch.so)时出错

  •  0
  • Hagbard  · 技术社区  · 7 年前

    请注意,这个问题是 another question 前段时间我问过这里。

    我想实现什么?

    我想使用JNA(Android Studio的4.5.2版)来实现以下目标:

    1. 首先,我想从给定的.so文件中获取所有可调用函数的列表。
    2. 一旦我有了这个列表,我想调用一个特定的函数

    到目前为止我做了什么?

    到目前为止,我的测试应用程序的文件“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”,并将其放在相应的子文件夹中(如前所述 here )但那不管用。

    我的应用程序的子文件夹“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
    

    如有任何帮助,我们将不胜感激。

    0 回复  |  直到 7 年前