请注意,这个问题是
another question
前段时间我问过这里。
我想实现什么?
我想使用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”,并将其放在相应的子文件夹中(如前所述
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
如有任何帮助,我们将不胜感激。