我有两个项目:
1 - Android Native项目
2 - C / C ++项目
我正在C / C ++项目中构建我的共享库文件(.so),并希望在Android Native项目中使用这些.so文件。
我不想将这些库文件从一个项目复制并粘贴到另一个项目中。
首先,可以通过对C ++库项目使用一些参考等来使用我原生Android项目中的那些.so文件吗?
是否更容易找到将.so文件从C ++库项目自动复制到Android原生项目的方法?
答案 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并静态链接它,所以我不必担心复制结果所以