Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置.so文件的绝对路径?_Java_Android_Java Native Interface_Loadlibrary - Fatal编程技术网

Java 如何设置.so文件的绝对路径?

Java 如何设置.so文件的绝对路径?,java,android,java-native-interface,loadlibrary,Java,Android,Java Native Interface,Loadlibrary,我正在使用System.loadLibrary(“xyz”)加载JNI库,它工作正常。但问题是,当使用java.lang.System.load()加载库时,如果在世界可读位置(如SD卡)指定了动态库的完整路径,则攻击者可以用恶意文件替换或修改原始文件。这可能导致将不受信任的内容加载到Dalvik VM中 因此,可以使用目标库的完全限定路径修复此问题。由于某些原因,我无法成功地提供完全合格的路径 下面是我尝试过但没有运气的事情 System.load ("xyz") System.load (

我正在使用
System.loadLibrary(“xyz”)
加载JNI库,它工作正常。但问题是,当使用
java.lang.System.load()
加载库时,如果在世界可读位置(如SD卡)指定了动态库的完整路径,则攻击者可以用恶意文件替换或修改原始文件。这可能导致将不受信任的内容加载到Dalvik VM中

因此,可以使用目标库的完全限定路径修复此问题。由于某些原因,我无法成功地提供完全合格的路径

下面是我尝试过但没有运气的事情

System.load ("xyz")

System.load ("/src/main/jni/lib/xyz")

System.load ("/system/lib/xyz")

谁能告诉我哪里出了问题。

您需要在gradle文件中设置'jniLibs.srcDirs'

比如:

main {
       ...
       jniLibs.srcDirs 'lib'
}

我和你有同样的问题。 在java.library.path(位于/data/data/com.xxx.yyy/lib/[abi])中加载lib时,
System.loadLibrary
正常。 但是当从绝对路径加载lib时,我们应该使用
System.load
。例如:

System.load("/data/data/com.xxx.yyy/files/xxx/libxyz.so")

确保提供库的全名。我猜在你的情况下,xyz实际上是libxyz。so@mko对它是has.so。这一行应该解决这个问题:System.load(“/some_location/lib/libxyz.so”),假设您有访问权限。“运气不好”不是一个问题描述符。您需要提供准确的错误消息和堆栈跟踪。但是
src
目录在运行时不会出现,并且运行时部署目录也不会与开发系统中的项目位置相同。