2

我想从将安装在系统中的应用程序的数据中获取本机库路径,我尝试了以下代码:

String libPath = "/data/data/" + packageName + "/lib/" + libName+".so";
System.load(libPath);

但它给出了这个错误:

java.lang.UnsatisfiedLinkError: dlopen failed: library /data/data/xxxx/lib/lib.so not found

我试图不使用硬编码

String libraryPath = context.getFilesDir().getParentFile().getPath() + "/lib/"+libname+".so";
System.load(libraryPath);

但如果我使用此代码,则会显示相同的错误:

String libPath = context.getApplicationInfo().nativeLibraryDir +libname+".so";
System.load(libPath);

该应用程序将尝试从系统/应用程序获取本机库并显示相同的错误,有人可以帮助强制从数据中获取本机库吗?也许是这样的

context.getApplicationInfo().nativeLibraryDir

但是强制数据,而不是系统,因为当我尝试在日志中显示 libpath 时(当我尝试在数据中安装时),它会显示

/data/app/apppackage-1/lib/arm/libname.so

包名后有一个数字,有时-1,有时-2。

4

0 回答 0