2015-09-20 89 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知道應該放置庫的位置。