在我的特定情况下,我在 C ++ 11 中实现了一个使用 CMake 的跨平台项目。我最初设计这个项目是为了在PC上工作( Windows , Unix ),但现在我意识到我也可以在移动平台上使用它,而无需重新实现业务逻辑在每个平台上。该项目使用标准库: Boost , Poco , OpenSSL , Protobuf 。
经过几次搜索后,我得出的结论是,在 Android 中将本机和托管代码组合在一起甚至不是一种常用模式。
是否可以将Android Studio中的 Gradle 项目中的引用添加到使用 CMake 的本机项目中?
如果我在命令行编译所有内容(假设我不使用 Android Studio ), NDK 能否以简单的方式采用该项目?< / p>
如果有可能,是否可以推荐?
答案 0 :(得分:5)
是否可以将Android Studio中的Gradle项目中的引用添加到使用CMake的本机项目中?
由于Google宣布了cmake插件附带的Android Studio 2.2,因此可以将CMake项目引用到android项目中。我试过了,我把它发布在my blog上。
如果我在命令行编译所有内容(假设我不使用Android Studio),NDK能否以简单的方式采用该项目?
根据我的经验,我以单独的方式编译NDK,然后链接要在android项目中使用的静态/共享库(.so文件)。我在使用mupdf here
开发PDF阅读器时使用了NDK希望这有帮助。
答案 1 :(得分:4)
有可能使用android studio 2.2,主要是用于gradle的android插件使其成为可能。你可以看一些例子: https://github.com/googlesamples/android-ndk/tree/master-cmake
android studio直接读入你的cmake脚本 - 没有像桌面系统那样为他们的原生IDE(Visual Studio或XCode)生成项目文件;所以你可能需要修改你现有的cmake文件,最终使它适用于android studio。
只要你构建到正确的APK,命令行或IDE都无关紧要。如果您打算提供源代码,那么使用IDE准备好您的项目将会很有吸引力。
答案 2 :(得分:0)
请参阅CMaker_Boost,在配置时使用CMake构建Boost。现在它在Linux和Android,gcc和clang上进行了测试。这可以包含在Android Studio中的gradle项目中。我希望这会有所帮助。