java.lang.UnsatisfiedLinkError .so是32位而不是64位

时间:2020-07-24 05:02:04

标签: android dll android-gradle-plugin

在我的Android应用中,我一直在使用.so库,该库位于libs/arm64-v8a文件夹中,例如,

app
  - libs
    - arm64-v8a
      - libsdk.so

我正在测试的目标设备支持arm64-v8a指令集。 当库尝试加载.so时,会弹出以下错误消息,

java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.example.app-VxrwbdJCJhWf5L_lBr_UPw==/lib/arm64/libsdk.so" is 32-bit instead of 64-bit

我以ZIP文件打开内置的APK,发现.so已经在arm64-v8a文件夹中。

为了解决此错误,我在应用程序的build.gradle文件中添加了ABI过滤器,

ndk {
    abiFilters 'arm64-v8a'
}

此外,这不起作用

ndk {
    abiFilters "armeabi-v7a", "x86", 'armeabi', 'arm64-v8a'
}

但是错误仍然存​​在。拥有arm64-v8a会将应用程序标记为64位,目标设备也将标记为64位(Android 10)(如本answer所述)。

一个问题可能是.so本身未针对64位设备进行编译。我不确定,有没有办法检查给定的.so 文件支持64位设备吗?

有什么方法可以在64位平台上运行32位库(.so)(假设该库是为32位平台编译的)?

0 个答案:

没有答案