2015-02-05 36 views
0

我想学习NDK,并且想使用外部库(libopus)。阅读一些文章后,我得到了这些步骤:如何在Android中使用外部本机库

git clone https://android.googlesource.com/platform/external/libopus 
mv libopus jni 
NDK_PROJECT_PATH=. ndk-build 

它装箱libs/armeabi/libopus.so文件。耶,真棒! ...现在呢?我怎样才能使用这个库?我怎样才能调用它的函数和方法?

此外,我的应用程序是否将在非ARM体系结构(x86,MIPS)上运行,因为armeabi表明它将仅用于ARM。

+2

https://github.com/tbocek/opus-wrapper libopus是与NDK来启动非常复杂的地方,因为在接口级你还必须深入到为这些流媒体流和线程处理与指针一起/对在媒体流上操作的功能的引用。 – 2015-02-05 15:45:51

回答

1

你不能只使用标准的Linux库。 Java/Android使用Java Native Interface(JNI),它是构建Java部件和本机部件之间桥梁的特殊C代码。

看起来您已经安装了NDK。查看项目样本,例如“hello-jni”项目。在这个例子中,你可以看到你要编写的JNI C代码以及如何从Java代码中访问自写的函数。

关于架构:是的,一个ARM库仅适用于ARM平台。如果你想创建一个跨平台的应用程序,你必须为每个支持的平台(通常是ARM,ARMv7,x86和MIPS)编译所有本地库。

+0

因此,我将不得不在C语言中编写一些额外的包装器,以便为Java启用opus函数? – Pitel 2015-02-05 15:36:55

+0

如果还没有您想要使用的库的现有包装器或“Java绑定”子项目,那么是的。 – Robert 2015-02-05 20:49:43