有什么办法可以把编译后的32位原生库当作64位的lib使用呢?

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

我试图在Play Store上发布我的旧版android应用,面临64位原生库要求的问题。

所以我的Android Studio项目是用Java写的,而且它在armeabi下有一个叫libgba.so的本地库。你可能已经知道Google play不接受没有x64库的APK。我的项目只有32位编译的本地库。不幸的是,我没有原生代码,无法再次构建库。

APK在所有设备上都能使用给定的32位原生库运行得很好,但是当我在jniLibs下创建并粘贴32位库到x64(arm64-v8a)的abi文件夹中时,当库试图加载时,我得到了一个类似下面的错误。

java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.advanceDragon.superSaiyanGoku-2aOWxg51Zl-_I9XC0pDcwg==/lib/arm64/libgba.so" is 32-bit instead of 64-bit

我想知道是否有任何方法可以在armeabi下加载库,并且在arm64-v8a下也有库,但它不应该被加载(只是为了Google play的64位要求)。或者如果有任何其他选项,请给我建议。谢谢。

**编辑:**

我试着用 System.load 从它的绝对路径加载.so lib,但我不知道它到底存储在哪里。

String path = "/data/data/" + packageName + "/lib/"; System.load(path + "libgba.so");

android android-ndk .so
1个回答
-1
投票

从64位文件夹中删除32位库,并将其留在32位lib文件夹中。

© www.soinside.com 2019 - 2024. All rights reserved.