Android本机项目引用来自c ++库项目的共享库

时间:2012-02-06 15:32:16

标签: android android-ndk shared-libraries

我有两个项目:

1 - Android Native项目
2 - C / C ++项目

我正在C / C ++项目中构建我的共享库文件(.so),并希望在Android Native项目中使用这些.so文件。 我不想将这些库文件从一个项目复制并粘贴到另一个项目中。

首先,可以通过对C ++库项目使用一些参考等来使用我原生Android项目中的那些.so文件吗?

是否更容易找到将.so文件从C ++库项目自动复制到Android原生项目的方法?

1 个答案:

答案 0 :(得分:1)

你首先需要为ARM重新编译你的lib。您可以使用ndk的“独立工具链”功能。有一个文档在ndk目录中解释了更多关于它的文档(docs / STANDALONE-TOOLCHAIN.html)。我需要在一个项目中使用libexpat,所以我使用独立的工具链编写了一个bash文件来编译expat,如下所示:

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并静态链接它,所以我不必担心复制结果所以