Z0q*_*Z0q 8 c++ android android-ndk ios libgdx
我正在使用LibGDX为Android和iOS编写应用程序,我希望能够将C++代码添加到我的应用程序中以优化某些部分并移植某些功能等.
我一直在搜索互联网,并尝试按照一些教程,但没有找到我需要的东西.
如何编写一个可以在LibGDX中加载的非常基本的C++库?我需要使用哪些工具?视觉工作室?我在Android Studio中开发.
我认为我需要Android的.so文件和iOS的.a文件,这是正确的吗?
在这两个平台上,可以直接包含预编译库和C++源代码.
在Android上,你会想要研究使用Android NDK.这允许您包含可以桥接到Java的本机C/C++代码.Java和C/C++之间的连接是用JNI.来管理的.对于C++和Java之间的通信来说,这是一个相当繁琐,笨拙的系统.您将需要研究Android.mk如何设置一个makefile,指定如何将库(或源代码)包含到构建中.
在iOS上,它的链接更紧密.您可以拥有可以运行C++和Objective-C代码的Objective-C++文件.如果你使用Swift,它会有所不同(在Objective-C++和Swift之间架起桥梁).
在某些情况下,当平台(Android/iOS)提供的功能优于C++可能或现实的功能时,您可能会发现自己正在构建代码,以便C++可以根据需要访问平台.这意味着您可能拥有每个平台具有单独实现文件的标头.
thing.hthing_android.cppthing_ios.mmAndroid应用程序的Android.mk文件将包括thing_android.cpp(但不包括thing_ios.mm).每当您需要Android SDK中的内容时,此文件可以根据需要跨越JNI桥接器与Java通信.
iOS应用程序将包括thing_ios.mm(但不包括thing_android.cpp).该.mm扩展表示的Objective-C++,这样的文件可能直接调用强大的可可库需要.
最后,在所有平台上,您都希望确保将C++的使用量缩减到最低的公分母平台.换句话说,如果iOS支持C++的特定功能,而Android不支持,那么您就无法使用该特定功能.