安卓本地项目如何引用C++库项目中的共享库?

5
我有两个项目:

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

我正在C/C++项目中构建共享库文件(.so),并希望在Android Native项目中使用这些.so文件。 我不想从一个项目复制和粘贴这些库文件到另一个项目。
首先,通过某些引用等方式从C++库项目中使用这些.so文件是否可行?
找到一种自动复制.so文件从C++库项目到Android native项目的方法会更容易吗?
1个回答

1

首先,您需要为ARM重新编译您的库。您可以使用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 并静态链接它,因此我不必担心复制结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接