如何在Android和iOS上使用C ++创build共享库?

我正在使用LibGDX为Android和iOS编写应用程序,我希望能够将C ++代码添加到我的应用程序中以优化某些部分并移植一些function等。

我一直在寻找互联网,并试图遵循一些教程,但没有find我所需要的。

我怎样才能写一个非常基本的C ++库,我可以加载到LibGDX? 我需要使用哪些工具? 视觉工作室? 我在Android Studio中开发。

我认为我需要Android的.so文件和iOS的.a文件,这是否正确?

Solutions Collecting From Web of "如何在Android和iOS上使用C ++创build共享库?"

在这两个平台上,都可以直接包含预编译的库以及C ++源代码。

在Android上,您需要考虑使用Android NDK 。 这使您可以包含可以桥接到Java的本机C / C ++代码。 Java和C / C ++之间的连接使用JNIpipe理。 在C ++和Java之间进行通信是一个非常单调,笨拙的系统。 您将需要考虑设置一个Android.mk makefile来指定如何将您的库(或源代码)包含到您的构build中。

在iOS上,它有更紧密的联系。 您可以拥有可以同时运行C ++和Objective-C代码的Objective-C ++文件。 如果你使用的是Swift,它有点不同(在Objective-C ++和Swift之间搭桥)。

在某些情况下,当平台(Android / iOS)提供的function优于C ++的可能或现实时,您可能会发现自己构build代码,以便您的C ++可以根据需要与平台联系。 这意味着您可能在每个平台上使用不同的实现文件。

  • thing.h
  • thing_android.cpp
  • thing_ios.mm

Android应用程序的Android.mk文件将包括thing_android.cpp (但不是thing_ios.mm )。 这个文件可以跨越JNI网桥,根据需要与Java进行交stream,无论何时您需要Android SDK中的某些内容。

iOS应用程序将包括thing_ios.mm (但不包括thing_android.cpp )。 .mm扩展名表示Objective-C ++,因此该文件可以根据需要直接调用强大的Cocoa库。

最后,在所有平台上,您都要确保将C ++的使用缩减到最低的通用平台。 换句话说,如果iOS支持C ++的特定function,而Android不支持,则不能使用该特定function。