如何使用/合并CPP文件到Android项目?

时间:2014-08-14 09:29:24

标签: android c++ ios android-ndk java-native-interface

我们开发了一个iPad应用程序,其中核心逻辑是用CPP代码编写的,因此我们可以将相同的代码文件/库用于其他平台。

现在我想使用这些文件并开发类似的Android应用程序,但无法创建.so文件并在Android.mk文件和所有文件中集成路径。我基本上是iOS开发人员,这是我第一次关注Android NDK。

如果有任何直接的步骤,任何人都可以提供帮助和指导。

我已经浏览过Android开发者网站和其他一些教程网站。但这些都不适合我。

要求在java中调用cpp方法的步骤简单明了,如果我已经有几个cpp文件和.a库了。

2 个答案:

答案 0 :(得分:1)

在你坚持的步骤中,你并不是非常具体。

以下是关于如何从java(android)调用本机代码的快速解释:

  • 首先创建一个由本机导出并由java调用的方法(这使用JNI,所以google JNI,JNIEXPORT)

  • 一旦在本机代码中定义了此方法,就可以使用NDK中的编译器创建共享库(.so)文件了(因为您正在为android编译) 。您需要编译设备的正确架构(armeabiv7s是现在最常见的日子)。

  • 您需要在app.apk中的armeabi文件夹中添加库文件(NDK教程中的更多详细信息)。

  • 在java代码中,您需要通过System.loadLibrary(LIBRARY_NAME)加载共享库;

  • 在您的java代码中,您需要定义与您从CPP代码导出的方法配对的静态本机方法

快速提示:

稍后您会遇到使用makefile的编译问题,但到那时您可能会对您的问题更加具体。

答案 1 :(得分:0)

最简单的方法是使用hello-jni Android Studio示例项目。

有很多设置和配置,您可以从作为工作单位的示例中获得这些设置和配置,从工作开始时总是最容易的。

首先运行(并修改)hello-jni,并了解Java和C部分之间的交互作用。除了环境ANSI C / C ++之外,其他所有东西都可以使用。您必须从Java获取语言,国家等信息,然后将其传输到C代码。您在美国用英语,在JNI中用“英寸和加仑”表示。

然后转到您使用android studio创建的项目,然后从hello-jni对其进行逐位复制和修改。当您拥有自己的品牌hello-JNI时,可以一点一点添加自己的代码。通常,使用C-dummies来测试与Java部件的交互性会更容易,然后将其更改为您自己的真实C / C ++代码。

阅读Android / Android Studio文档并学习和理解。使用Android模拟器要容易得多,而且效果很好。

到目前为止,项目配置是最难处理的。如果我今天要创建一个新项目,我将再次从Hello-JNI开始。