博观而约取,厚积而薄发。这篇文章主要讲述如何使用/合并CPP文件到Android项目?相关的知识,希望能为你提供帮助。
我们开发了一个iPad应用程序,其中核心逻辑是用CPP代码编写的,因此我们可以将相同的代码文件/库用于其他平台。
现在我想使用这些文件并开发类似的android应用程序,但无法创建.so文件并在Android.mk文件和所有文件中集成路径。我基本上是ios开发人员,这是我第一次看到Android NDK。
如果有任何直接的步骤,任何人都可以帮助和指导。
我已经通过Android开发人员网站和其他一些教程网站。但这些都不适合我。
需要简单明了的步骤来调用java中的cpp方法,如果我已经有很少的cpp文件和.a库了。
答案你在坚持的步骤中并不是很具体。
这里有一个关于如何从java(android)调用本机代码的快速解释:
- 首先创建一个由本机导出并由java调用的方法(这使用JNI,所以google JNI,JNIEXPORT)
- 一旦你在你的本机代码中定义了这个方法,就可以使用NDK中的编译器创建一个共享库(.so)文件了(因为你正在为android编译)。您需要编译设备的正确架构(armeabiv7s是现在最常见的日子)。
- 你需要在app.apk中的armeabi文件夹中添加库文件(NDK教程中的更多细节)。
- 在您的java代码中,您需要通过System.loadLibrary(LIBRARY_NAME)加载共享库;
- 在您的Java代码中,您需要定义与您从CPP代码导出的方法配对的静态本机方法
- 使用C函数而不是CPP,因为CPP将在生成的共享库中被破坏。换句话说,您将需要创建一个将调用cpp代码的C包装器。
- 查看NDK的hello world教程,并从那里开始工作。这是一个指向http://trivedihardik.wordpress.com/2011/06/16/hello-world-example-using-ndk-in-android/教程的链接
另一答案最简单的方法是使用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工作室文档并学习和理解。使用Android模拟器,更容易,它们很好。
【如何使用/合并CPP文件到Android项目()】项目配置是目前最难处理的。如果我今天要做一个新项目,我会再次从Hello-JNI开始。
推荐阅读
- 从Android Activity onCreate方法调用QCoreApplication方法
- Android JNI - 调用AttachCurrentThread而不使用DetachCurrentThread
- 如何加载android系统本机库
- 使用Android NDK将文件写入SDcard以外的位置()
- Xamarin.Android Java绑定库运行时失败访问本机库
- 如何在tid xxxxx(Thread-X)中解决Android致命信号11(SIGSEGV),代码1,故障地址0x0()
- 如何在Android应用程序中使用Geocoder在特定位置找到大陆
- 从AppWidgetProvider到Broadcastreceiver的意图
- 如何让Android搜索栏顺利移动()