【问题标题】:Import own native shared library from sub-module in Android Studio / CMake从 Android Studio / CMake 中的子模块导入自己的本机共享库
【发布时间】:2017-08-05 10:18:32
【问题描述】:

我有一个带有 2 个模块的 Android Studio (2.3) 项目,使用 CMake 编写本机代码。

Project
  --> Module1 (app): java + native JNI-wrapper, linking to libnative.so
  --> Module2 (libnative): native c++ code, producing libnative.so

libnative.so(由Module2 构建)链接到Module1 中的JNI 包装器的首选方法是什么?我目前使用...

Module1-CMakeLists.txt:

add_library( native SHARED IMPORTED )
set_target_properties( jniwrapper PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../libnative/build/intermediates/cmake/${BUILD_TYPE}/obj/${ANDROID_ABI}/libnative.so )

...BUILD_TYPE 在 Module1 的 build.gradle 中设置,具体取决于构建类型。

如果我在构建完整项目之前在 AS 中使用“Make Module 'Module2'”,则此方法有效。但是,从 gradle 的构建文件夹层次结构中获取库似乎相当不雅。

替代方法似乎是指示 Module2 的 CMakeLists.txt 将文件安装到 Module1 的 lib 目录并从那里导入。但是 CMake 似乎忽略了install 命令。

(我知道我可以将模块放在一棵树下。)

谢谢!

【问题讨论】:

    标签: android android-studio android-ndk cmake


    【解决方案1】:

    替代方案如下:(Module2 CMakeLists.txt)

    set_target_properties(${SHARED_LIBRARY_NAME}
                      PROPERTIES
                      LIBRARY_OUTPUT_DIRECTORY "<your-prefered-directory>/jniLibs/${ANDROID_ABI}")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      相关资源
      最近更新 更多