我的问题如下。
我需要用Java创建一个库。到现在为止还挺好。 像任何体面的Java库一样,它必须可以在任何JVM上使用。
但是这里的难点在于这个库将包含很多原生代码。
我对JNI
有一些了解。
我尝试使用native
和Android Studio
在Android应用中使用Java创建一些Android NDK
方法。
非常棒,我可以做很多HelloWorld示例。但是如何将其导出为库?
我的项目需要外部C ++库。 我想包装这些库并在包含在Java库中的JNI包装器中使用它们。
为了使事情更简单,请以一个简单的HelloWorld JNI API为例。
创建Java桌面应用程序(或其他任何东西)。导入Helloworld JNI API(作为jar),调用String HelloWorldJNI_API.sayHello(String yourName)
并打印结果。
这里需要什么:
String yourName
)发送给JNI; jstring
String
返回
瞧!这个简单的例子应该告诉你我想要做什么。
答案 0 :(得分:2)
好吧,你的库将包含带有java包装器代码的.jar文件以及本机文件(.so如果你是基于linux的话,或.dll,如果你在windows上)。
这是有趣的开始:
因为native是用处理器汇编语言编译的,所以你必须为所有支持的目标编译.so(例如,对于所有具有本机支持的android,因为永远都是这样): armv5,armv7,armv7s,arm64
现在,您必须提供包含以上所有内容的存档。
这种情况下,您需要一个独立的库,而不向开发人员提供代码。
如果您可以提供代码,那么您无需担心不同的架构。