Cau*_*loy 6 c++ android native cmake android-studio
我有一个当前在 Visual Studio 中设置的 C++ 代码库(在 Windows 上运行),其中包含多个相互依赖的项目。我试图把它带到 Android Studio,让它在 Android 上运行。我熟悉 Visual Studio 和 C++,但对 Android Studio 的 Gradle 和 CMake 很陌生。
我(可能是错误的)期望是尝试处理像 Visual Studio 解决方案这样的 Android Studio 项目和像 Visual Studio 项目这样的 Android Studio 模块。鉴于我的代码库在 Visual Studio 中使用多个项目,我试图在 Android Studio 中创建多个模块——每个模块都有自己的build.gradle
和CMakeLists.txt
文件。
问题是我无法让一段代码(AS 模块)与另一段链接。我正在编译这些不同的部分作为STATIC
使用add_library()
(我计划有一个模块来创建一个SHARED
库,加载到Java)。
我可以轻松地通过include_directories("../OtherModule/src/")
. 但是,我无法将其链接。我找不到要链接到的 .so(或类似)文件(通过target_link_libraries()
或等效)。当我从给定的模块中提取 .arr 文件时,我看不到任何 .so 或任何内容。
我意识到我可以简单地将整个代码库放在一个模块下(使用一个build.gradle
和一个CMakeLists.txt
-- 或者CMakeLists.txt
使用 's 的网络add_subdirectory()
)。我不知道这是否可以,或者是否需要更多/更少的时间来构建。
我确信可以有多种方法来设置它,这可能只是一个偏好问题。到目前为止,我所做的所有研究都只发现将本机代码严格添加到带有 Java 代码的同一模块中——做基本的 JNI 本机桥接工作。我找不到一篇关于多个本机模块链接在一起的文章。
我希望有更多 Android 原生开发经验的人可以帮助我。谢谢!
TL;DR:简化场景:(不关心 JNI 本机桥)我在 Android Studio 中有两个模块,都只有本机代码。我想让每个模块都有自己的build.gradle
和CMakeLists.txt
,创建自己的STATIC
库。一个模块依赖于另一个并且必须设置正确的包含和链接目录。怎么办?!这是否正确(或者应该只有一个带有本机代码的模块)?
我在这里问了一个相关的问题。在我看来,AS...
SHARED
(它确实允许模块内有静态“子库”);考虑使最终的库共享 -System.loadLibrary()
不过,您将不得不在 Java 中专门使用它。set_target_properties( jniwrapper PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/../libnative/build/intermediates/cmake/${BUILD_TYPE}/obj/${ANDROID_ABI}/libnative.so )
并BUILD_TYPE
在 build.gradle 中进行设置来解决这个问题。但并不过分优雅。总的来说,这似乎不是 AS 中值得鼓励的用例......
归档时间: |
|
查看次数: |
2379 次 |
最近记录: |