2015-09-20 3 views
1

Я делаю 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 указывает на каталог, который не существует?

Как это исправить?

ответ

1

Это не имеет смысла для линке ...

Однако .so файлы не должны быть в/данные/приложения Пб/с Android 21+. Вы можете найти свои библиотеки внутри /data/app/com.example-1/lib/x86_64?

Вы можете прочитать legacyNativeLibraryDir от dumpsys package packages, чтобы узнать, где должны размещаться библиотеки.

Смежные вопросы