我想从将安装在系统中的应用程序的数据中获取本机库路径,我尝试了以下代码:
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。