Я создал FFmpeg для Android и хочу использовать его в таком приложении:
System.loadLibrary("avutil");
System.loadLibrary("swscale");
System.loadLibrary("avcodec");
System.loadLibrary("avformat");
Результатом сборки являются файлы lib*.so
, lib*.so.MAJOR
и lib*.so.MAJOR.MINOR.OTHER
. Внутри общих объектов есть ссылки типа lib*.so.MAJOR
, например, libswscale.so.2
требует libavutil.so.52
.
Теперь, если я положу файлы *.so
в папку libs
проекта (точнее libs/armeabi-v7a
), я, конечно, получу
01-25 12:06:40.270: E/AndroidRuntime(2905): java.lang.UnsatisfiedLinkError: невозможно загрузить библиотеку: link_image[1936]: 107 не удалось загрузить необходимую библиотеку libavutil.so.52 для libswscale.so (load_library[1091]: библиотека 'libavutil.so.52' не найдена)
Однако, если вместо этого я поместил файлы *.so.MAJOR
в папку libs
, чтобы устранить исключение связывания, я получаю ту же ошибку при запуске приложения из Eclipse. И я заметил, что файлы даже не экспортируются, если я создаю APK! Итак, как мне указать Eclipse упаковать файлы *.so.MAJOR
как библиотеки? Или, альтернативно, как мне скомпилировать общие объекты таким образом, чтобы они ссылались друг на друга по *.so
вместо *.so.MAJOR
?
РЕДАКТИРОВАТЬ: кажется, нет способа упаковать файлы *.so.XYZ
автоматически.