2015-09-20 100 views
1

我正在制作Android应用程序,其原生NDK代码动态链接一些.so共享库文件与dlopen()(如果您有兴趣,它是OpenNI2相机库,它首先检测附加的相机型号,然后为此加载.so文件模型)。为什么我的Android lib目录符号链接不正确?

我已经将这些库放在我的app/src/main/jniLibs/armeabi-v7a/目录(用于在ARM上运行API版本19的手机)和app/src/main/jniLibs/x86_64/目录(用于在Intel x86_64上运行API版本23的平板电脑)。

的手臂,一切工作正常,并且符号链接到包含我的.so文件lib目录是正确的:

# ls -l /data/data/com.example/ 
drwxrwx--x u0_a175 u0_a175   2015-09-02 00:10 app_execdir 
drwxrwx--x u0_a175 u0_a175   2015-09-19 22:39 cache 
lrwxrwxrwx install install   2015-09-20 02:30 lib -> /data/app-lib/com.example-1 

# ls -l /data/app-lib/com.example-1 
-rwxr-xr-x system system  409940 2015-10-20 02:30 gdbserver 
-rwxr-xr-x system system  308532 2015-10-18 01:06 libOpenNI2.so 

然而,英特尔我看到:

# ls -l /data/data/com.example/         
drwxrwx--x u0_a65 u0_a65   2015-09-20 00:41 app_execdir 
drwxrwx--x u0_a65 u0_a65   2015-09-20 00:41 cache 
lrwxrwxrwx install install   2015-09-20 00:41 lib -> /data/app-lib/com.example 

# ls -l /data/app-lib/com.example 
/data/app-lib/com.example: No such file or directory 

这是怎么回事在这?为什么lib符号链接指向一个不存在的目录?

我该如何解决?

回答

1

它没有意义的符号链接...

但是.so文件不应该在/ data/app中-lib /下的Android 21+。 您可以在/data/app/com.example-1/lib/x86_64中找到您的库吗?

您可以阅读legacyNativeLibraryDir来自dumpsys package packages知道应该放置库的位置。