我有一个带有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
Run Code Online (Sandbox Code Playgroud)
libnative.so在Module1中将(由Module2构建)链接到JNI包装器的首选方法是什么?我目前用...
模块1-的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 )
Run Code Online (Sandbox Code Playgroud)
... BUILD_TYPE在Module1中设置的位置build.gradle,具体取决于构建类型.
如果我在构建完整项目之前在AS中使用" Make Module'Module2' ",这是有效的.但是,从gradle的构建文件夹层次结构中获取库似乎相当不优雅.
另一种方法似乎是指示Module2 CMakeLists.txt将文件安装到Module1的lib目录中并从那里导入.但是CMake似乎忽略了这个install命令.
(我知道我可以将模块放在一棵树下.)
谢谢!
我有一个 C++ 模块,它构建到一个包含模块 .so 的 aar 文件。为了在另一个项目中使用它,我不仅需要 .so,还需要关联的头文件。我想也许我可以简单地在 .aar 文件中包含 C++ 头文件,但是在导入 aar 时,Android Studio 似乎没有解压缩 .aar 以使头文件可见。
我将如何配置 Android Studio/CMake 以在 .aar 中包含头文件?
如果我有一个带有头文件的 .aar 文件,我如何在导入到 Android Studio 时引用 C++ 头文件,或者我需要解压缩 .aar 文件而不是将它导入到 Android Studio 中?