как включить готовые разделяемые библиотеки в apk с eclipse - PullRequest
7 голосов
/ 28 октября 2011

У меня есть общая библиотека libfoo.so, и мне нужно использовать ее в моем приложении для Android.

Моя первая попытка была в Android.mk:

include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := test.cpp
LOCAL_LDLIBS := -L$(PATH_TO_FOO) -lfoo
include $(BUILD_SHARED_LIBRARY)

в своей деятельности я имею:

statis
{
    System.loadLibrary("foo");
}

Это правильно, но я заметил, что созданный apk не включает libfoo.so (также я вижу, что он не копируется в libs / armeabi). Я думаю, по этой причине у меня UnsatisfiedLinkError при запуске моего приложения.

Я видел в некоторых других сообщениях, что мне нужно добавить $ (PREBUILD_SHARED_LIBRARY), поэтому я добавляю следующее в мой Android.mk:

include $(CLEAR_VARS)
LOCAL_MODULE:= foo
LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so
include $(PREBUILD_SHARED_LIBRARY)

Но теперь я получаю ошибку сборки:

foo: LOCAL_SRC_FILES points to a missing file.

Я уверен, что путь правильный. Обратите внимание, что libfoo.so изначально имел номер версии в конце, хотя мне пришлось удалить его (и оставить только .so), так как ndk-build жаловался.

Что я делаю не так?

Ответы [ 3 ]

5 голосов
/ 31 октября 2011

Нашли решение !!LOCAL_SRC_FILES не может иметь абсолютные или относительные пути, только имя файла.Путь должен быть указан в LOCAL_PATH.

Так что в моем случае вместо:

LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so

у меня сейчас:

LOCAL_PATH := $(FOO_PATH)
LOCAL_SRC_FILES := libfoo.so

И это работает нормально.

5 голосов
/ 15 марта 2012

Включение выглядит как ошибка:

include $(PREBUILD_SHARED_LIBRARY)

должно быть

include $(PREBUILT_SHARED_LIBRARY)
1 голос
/ 28 октября 2011

В eclipse я добавляю статическую библиотеку, копируя файл в путь проекта / libs / armeabi / и перестраивая проект после его очистки. Это включает в себя .so в apk.

...