2014-01-10 4 views
1

У меня возникла проблема, когда мой APK может загрузить файл .so, содержащийся в папке/data/data/app/lib, но компоновщик не может найти его зависимостей, также расположенных в этой папке. Ошибка:java.lang.UnsatisfiedLinkError: не удается загрузить библиотеку

D/dalvikvm(5541): Trying to load lib /data/data/app/lib/liba.so 0x41978aa8 
W/dalvikvm(5541): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lapp; 
... 
E/AndroidRuntime(5541): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1891]: 1679 could 
not load needed library 'libb.so' for 'liba.so' (load_library[1093]: Library 'libb.so' not found) 

Интересно есть другие зависимости, которые найдены, потому что они поставляются с Android в/системы/Lib, но я не могу понять, почему он не будет смотреть в/данных/данных/app/lib?

EDIT: Это отличается от вопроса, который отмечен как дублирующий, поскольку он касается операции связывания во время выполнения, а не с тем, как импортировать библиотеки в Eclipse IDE. Обходной путь от явной загрузки зависимостей для того, упомянута в вопросах here и here однако

+2

ли это работать, если вы явно загрузите 'libb.so' первым? – fadden

+0

Он делает: P Спасибо! Я ожидал, что он будет рассматривать этот путь как своего рода LD_LIBRARY_PATH и использовать некоторые умные решения для разрешения зависимостей. – chrisvarnz

ответ

3

Как Фадден указывает выше, решение явно загружать зависимости первой, как в:

System.loadLibrary("b"); System.loadLibrary("a");

+0

Не обязательно разрешает эту ошибку. –

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