Я делаю Android-приложение, чей родной код NDK динамически связывает некоторые файлы разделяемой библиотеки .so
с dlopen()
(если вам интересно, это библиотека камер OpenNI2, которая сначала определяет, какая модель камеры подключена, а затем загружает файл .so
для этого модель).Почему моя ссылка для Symbian?
Я разместил эти библиотеки в своем каталоге app/src/main/jniLibs/armeabi-v7a/
(для моего телефона, использующего API версии 19 на ARM) и app/src/main/jniLibs/x86_64/
(для моего планшета с API версии 23 на Intel x86_64).
На ARM, все работает отлично, и символическая в lib
каталог, содержащий мои .so
файлы правильно:
# 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
Однако на Intel я вижу:
# 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
указывает на каталог, который не существует?
Как это исправить?