Android Studio中的多个本机模块

Android Studio中的多个本机模块,第1张

概述我有一个C代码库,目前在Visual Studio中设置(在 Windows上运行),具有多个具有相互依赖关系的项目.我正试图将它带到 Android Studio,以使其在Android上运行. 我熟悉Visual Studio和C,但对于Android Studio的Gradle和CMake来说却是一个新手. 我的(可能是错误的)期望是尝试处理像Visual Studio Solutions这 我有一个C代码库,目前在Visual Studio中设置(在 Windows上运行),具有多个具有相互依赖关系的项目.我正试图将它带到 Android Studio,以使其在AndroID上运行.
我熟悉Visual Studio和C,但对于AndroID Studio的Gradle和CMake来说却是一个新手.

我的(可能是错误的)期望是尝试处理像Visual Studio Solutions这样的AndroID Studio项目,以及像Visual Studio项目这样的AndroID Studio模块.鉴于我的代码库在Visual Studio中使用了多个项目,我试图在AndroID Studio中创建多个模块 – 每个模块都有自己的build.gradle和CMakeLists.txt文件.

问题是我无法将一段代码(AS模块)与另一段进行链接.我正在使用add_library()将这些不同的部分编译为STATIC(我计划有一个模块创建一个SHARED库,加载到Java中).

我可以通过include_directorIEs(“../ OtherModule / src /”)轻松获取包含.但是,我无法将其链接起来.我找不到要链接的.so(或类似)文件(通过target_link_librarIEs()或等效文件).当我从给定的模块中提取.arr文件时,我看不到任何.so或任何东西.

我意识到我可以简单地将整个代码库放在一个模块下(使用一个build.gradle和一个CMakeLists.txt – 或使用add_subdirectory()的CMakeLists.txt网络).我不知道这是否正常,或者是否需要更多/更少的时间来构建.

我确信可以有多种方法来设置它,这可能只是一个偏好问题.到目前为止,我所做的所有研究都发现,使用Java代码严格地将本机代码添加到同一模块中 – 执行基本的JNI本机桥接.我找不到一篇关于连接在一起的多个本机模块的文章.

我希望那些在AndroID上有更多本地开发经验的人可以帮助我.谢谢!

TL; DR:简化场景:(不关心JNI本机桥)我在AndroID Studio中有两个模块,两者都只有本机代码.我想让每个Module都有自己的build.gradle和CMakeLists.txt,创建自己的STATIC库.一个模块依赖于另一个模块,必须设置正确的包含和链接目录.怎么办?!这是否正确(或者是否应该只有一个具有本机代码的模块)?

解决方法 我问了一个相关的问题 here.在我看来,AS ……

> …实际上并没有链接最终的模块库,除非它是SHARED(它确实允许模块中的静态’子库’);考虑让最终的库共享 – 尽管如此,你必须使用System.loadlibrary().
> …不允许您将文件安装到其他位置(例如,从您的本机模块安装到AndroID应用程序).我通过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中鼓励的用例…

总结

以上是内存溢出为你收集整理的Android Studio中的多个本机模块全部内容,希望文章能够帮你解决Android Studio中的多个本机模块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存