我熟悉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中的多个本机模块所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)