【问题标题】:Android native project referencing shared library from c++ library projectAndroid 本机项目从 C++ 库项目中引用共享库
【发布时间】:2012-02-28 01:42:47
【问题描述】:

我有 2 个项目:

1 - Android 原生项目
2 - C/C++ 项目

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

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

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

【问题讨论】:

    标签: android android-ndk shared-libraries


    【解决方案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
    

    然后你可以将so复制到任何你想要的地方并从Android.mk中引用它:

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

    请注意,我构建了 expat 并静态链接它,所以我不必担心复制结果所以

    【讨论】:

      猜你喜欢
      • 2019-11-11
      • 1970-01-01
      • 2012-09-14
      • 2013-08-05
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      相关资源
      最近更新 更多