android .so 文件使用

问题描述 投票:0回答:1

我从我的 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 时构建它,或者如果这一切应该按原样工作以及为什么不工作。

android android-ndk shared-libraries
1个回答
0
投票

我会从一些事情开始:

  1. loadLibrary
    调用中捕获异常,以查看它尝试在何处查找库
  2. 检查您的最终 apk,看看您的库是否存在于其中
  3. 检查您的库是否是为您的目标 ABI 构建的
ndk {
    abiFilters "armeabi-v7a", "x86", "mips"
}
© www.soinside.com 2019 - 2024. All rights reserved.