2012-02-13 2 views
0

У меня есть устаревший код, который использует autotools для создания разделяемых библиотек. Эти библиотеки должны использоваться в приложении для Android, поэтому я создал для него простой класс Java и JNI-обертку (как общую .so-библиотеку).Здание APK удаляет номер версии родной библиотеки из имени файла

У меня уже есть скрипт Android.mk, который правильно выполняет устаревшую систему сборки, создает собственную библиотеку для Java-программы и связывает ее.

Выходные файлы являются следующие:

libs/armeabi/lib-a.so.0 
libs/armeabi/lib-b.so.2 
libs/armeabi/lib-wrapper.so 

lib-wrapper.so зависит от обеих библиотек lib-a и lib-b. Обратите внимание, что устаревшая настройка autotools добавляет номер версии в имя файла общей библиотеки, которая встраивается как зависимость в lib-wrapper.so.

# arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf -d ./lib-wrapper.so 
Dynamic section at offset 0x7608 contains 28 entries: 
    Tag  Type       Name/Value 
0x00000001 (NEEDED)      Shared library: [lib-b.so.2] 
0x00000001 (NEEDED)      Shared library: [lib-a.so.0] 

Проблема:

во APK строительстве (например, экспорт неподписанный пакет из Eclipse.) Номера версий
удаляются из имен файлов. Это приводит к ошибке:

Cannot load library: link_image[1721]: 30 could not load needed library 'lib-b.so.2' for 'lib-wrapper.so'

потому что APK содержит файл lib-b.so.

Как я могу принудительно сохранить номера версий в здании APK?

Изменение устаревшей системы сборки не представляется возможным (пока это не обязательно), поскольку одна и та же установка используется для сборки библиотек x86/execs.

спасибо.

+0

Привет, вы нашли решение без изменения системы сборки? – robotniko

+0

Нет. Мы добавили несколько сценариев для ручного переименования файлов. Но я не коснулся этого через год, поэтому ... Теперь с градилью, может быть, она решена. –

ответ

0

Андроидный линкер не распознает разделяемые библиотеки, не заканчивающиеся на «.so». Вам нужно изменить имя файла, созданного устаревшей системой сборки.