Я прочитал другие вопросы, подобные этому при переполнении стека, но они не имеют одинакового сценария.Создание общей библиотеки из статической библиотеки * .a file
У меня есть файл FreeImage.a (23 МБ), который предварительно создает статическую библиотеку для Android. У меня также есть исходный код проекта FreeImage, у которого есть файлы заголовков.
Я хочу построить .SO файл из файла ( .а) я с моим JNI кода (FreeImageCompilation.cpp) Ниже код компилируется нормально, но это не производит SO файл (только 5KB) whre (*. файл - 23 МБ)?
может кто-нибудь проверить, соответствует ли мой код ниже для использования * .a файла или нет?
В моем Android.mk У меня есть следующий код.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := FreeImage
LOCAL_SRC_FILES := libFreeImage.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/FreeImage/Source/
include $(PREBUILT_STATIC_LIBRARY)
#My Own SO file
LOCAL_STATIC_LIBRARIES := FreeImage
include $(CLEAR_VARS)
LOCAL_MODULE := FreeImageSo
LOCAL_SRC_FILES := FreeImageCompilation.cpp
LOCAL_STATIC_LIBRARIES := FreeImage
include $(BUILD_SHARED_LIBRARY)
, что означает, что скомпилированные SO файл правильно, и мне нужно положить . * .a файл с SO-файлом при упаковке apk? – Kirtan
Согласно сайту WinGDB: «Статическая библиотека - это утилитная библиотека, которая может использоваться как компонент для создания разделяемых библиотек. Она отсутствует в файле APK и не установлена на устройство. Код Java не может загрузить его во время выполнения Статические библиотеки создаются в папку {output dir}/obj/local/{ABI name}. Это также промежуточная папка для разделяемых библиотек, однако последние автоматически копируются в конечный пункт назначения в {output dir}/libs/{ABI name}. Статические библиотеки остаются в промежуточной папке, где они доступны для компоновщика для создания разделяемых библиотек. " – eozgonul
Поэтому вам не нужно размещать файлы .a в APK. Это необходимо обработать в процессе связывания. – eozgonul