我从我的 C 开发人员那里获得了 .so 文件以及在 Android 应用程序中使用它的任务。有一个 .h 文件只有这个。
int run();
我阅读了大约 20 种不同的指南和教程,其中一些感觉相当过时,而且由于我在构建 C 应用程序方面没有任何经验,所以我非常困惑。根据我读过的文章,这就是我所做的。 我在 java/assets 文件夹旁边创建了 jniLibs。 在里面我创建了arm64-v8a文件夹,我在其中放置.so文件,假设它被称为libDriver.so 让我们假设 so 文件没问题,我不知道,但让我们假设它是好的。
放入我的 Java 代码中
static {
System.loadLibrary("Driver");
}
public native int run();
现在,当我运行应用程序时,我得到:java.lang.UnsatisfiedLinkError:dlopen失败:未找到库“libDriver.so”
我使用的是gradle-8.0,Android Studio Giraffe | 2022.3.1 补丁 4、compileSdk 34 和 Java 17
我不清楚的主要问题是,在我阅读所有这些指南后,如果我需要安装 NDK,请在 .c 中创建 .mk 文件和一些粘合层,并让 ndk 在每次构建 apk 时构建它,或者如果这一切应该按原样工作以及为什么不工作。
我会从一些事情开始:
loadLibrary
调用中捕获异常,以查看它尝试在何处查找库ndk {
abiFilters "armeabi-v7a", "x86", "mips"
}