Android нативный проект ссылается на общую библиотеку из проекта библиотеки c ++ - PullRequest
5 голосов
/ 06 февраля 2012

У меня есть 2 проекта:

1 - собственный проект Android
2 - проект C / C ++

Я создаю файлы общей библиотеки (.so) в C /Проект C ++ и хотите использовать эти .so файлы в проекте Android Native.Я не хочу копировать и вставлять эти библиотечные файлы из одного проекта в другой.

Прежде всего, возможно ли использовать эти .so файлы из моего собственного проекта Android с помощью некоторой ссылки и т. Д. На проект библиотеки C ++?

Было бы проще найти способ автоматического копирования .so файлов из проекта библиотеки C ++ в собственный проект Android?

1 Ответ

1 голос
/ 06 февраля 2012

Ну, сначала вам нужно пересобрать свои библиотеки для ARM. Для этого вы можете использовать функцию автономного набора инструментов ndk. Есть документ, объясняющий больше об этом в ndk dir (docs / STANDALONE-TOOLCHAIN.html). Мне нужно было использовать libexpat в проекте, поэтому я собрал bash-файл для компиляции экспата, используя автономный набор инструментов, например:

NDK_PATH=/android-ndk-r7
NDK_GCC=${NDK_PATH}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc

export CC="${NDK_GCC} --sysroot=${NDK_PATH}/platforms/android-8/arch-arm"
export CFLAGS='-mthumb'
export LDFLAGS='-Wl,--fix-cortex-a8'
./configure --host=arm-eabi
make

Затем вы можете скопировать его куда угодно и ссылаться на него с Android.mk:

LOCAL_LDLIBS := \
-Lvendor/expat/sdk/lib/android \
-lexpat

Обратите внимание, что я построил expat и связал его статически, чтобы мне не пришлось беспокоиться о копировании полученного результата, поэтому

...