使用存档文件中的函数而不使用.cpp

时间:2016-10-11 08:55:07

标签: java android c++ android-ndk

我有一个存档文件,其中包含许多内置的功能。

阅读了android ndk文档后,我假设在Java类的System.loadLibrary()中,我可以访问归档文件中的函数。

我无法访问.cpp文件,所以我只使用.a + .h(头文件)。

我还是新手,所以一些帮助将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:1)

你有Java,你有Native(二进制+ .h文件)

现在你需要JNI(https://en.wikipedia.org/wiki/Java_Native_Interface

JNI将帮助您从Java

调用本机函数(在.a文件中)

答案 1 :(得分:0)

这个sample使用2个库:一个是静态的,另一个是共享库。它只是一个如何在android平台中使用外部(第三方)库的框架,它可能与你所处的接近。 System.LoadLibrary()将加载共享库,这意味着您需要为静态库创建自己的包装器:

  • 创建您的Java应用
  • 为您的原生函数添加java包装函数
  • 使用javah生成您的原生函数原型或让android studio自动为您生成它们(右键单击java函数,选择生成原型);这些函数有一些特殊的签名,所以它们可以被你的java端代码调用(当你到达那里时你会看到它)。记得向他们添加JNIEXPORT JNICALL(如果Android Studio忘记了它,请手动将它们添加到您的函数中)
  • 从生成的本机函数中调用存档(* .a,static lib)中的lib函数

可以在sample repo中找到一些示例,但您需要决定是使用ndk-build还是cmake来构建本机C / C ++代码。最好将CMake用于新项目。