C++ library for android

C++ library for android

本文关键字:android for library C++      更新时间:2023-10-16

我使用SDK在Eclipse中编写了多个应用程序。我以前也曾与C 合作过。现在,我被要求安排将一些旧的C 代码包裹到Java库中,或者至少具有Java界面,以便其他Android程序员(不了解C )可以在其代码中使用它。

我已经看到了各种示例和讨论将C 代码制作到完整独立应用程序中的讨论,但从来没有库。

如果使用我的库的Android程序员甚至不需要知道或安装NDK本身,那就更好了。

有人可以确认我要做的事情甚至有可能。如果是这样,如何?

有一种方法可以用eclipse(adt):

您可以创建一个Android库项目,并拥有开发人员 将图书馆项目添加到他们的主要项目中。任何本地库 如果该项目有 已经内置在其LIB目录中。这不是一个整洁的 罐子,但这是我们为常规Android库做的方式 导出Java代码和资源的项目。

对于AndroidStudio,包装有些不同,请参阅此讨论。请注意,当前移动的目标也是如此;我们所有人都希望它将在NDK官方之前得到体面的支持。

您需要编写JNI(Java本机接口)代码才能访问库。在您的Java课程中,您将有一种方法:

private native final int doStuff();

将与NDK编译的.cpp文件中的函数相对应。当调用Java方法时,将调用此C 函数。

看这篇文章:http://mobile.tutsplus.com/tutorials/android/android/ndk-tutorial/

这是一个开源项目,我正在做这件事:https://github.com/svenoaks/soundtouch-android。查看soundtouch-jni.cpp文件及其与soundtouch.java文件中的呼叫相对应的方式。

编写适当的方法后,您可以将C 库和JNI代码编译为二进制.SO文件,因此用户不需要对NDK了解任何信息。然后可以像常规的Android库项目一样使用该项目。

如果要针对X86设备以及ARM架构,则需要在应用程序中启用X86构建它。文章/创建基于ndk的and-ndk android-apps-for-ia#lust-x86-ndk-toolset