Java 如何将.so文件打包到jar中?

Java 如何将.so文件打包到jar中?,java,android,jar,java-native-interface,Java,Android,Jar,Java Native Interface,我目前正在开发一个java库(绑定),它使用一些自己编写的本机代码。本机代码编译为一个.so文件,用于多种体系结构(arm-v7、i686、x86-64等) 我知道在安卓系统中,你必须创建一个名为jniLibs的文件夹,其中包含每个架构的子文件夹,其中包含适当的。so文件。然后使用Android.mk文件和System.loadLibrary我可以将这些文件包含到我的代码中 但是,我不知道如何在普通java项目/库中包含这些。我在网上读到,System.loadLibrary只适用于查看普通文件

我目前正在开发一个java库(绑定),它使用一些自己编写的本机代码。本机代码编译为一个
.so
文件,用于多种体系结构(arm-v7、i686、x86-64等)

我知道在安卓系统中,你必须创建一个名为
jniLibs
的文件夹,其中包含每个架构的子文件夹,其中包含适当的
。so
文件。然后使用
Android.mk
文件和
System.loadLibrary
我可以将这些文件包含到我的代码中


但是,我不知道如何在普通java项目/库中包含这些
。我在网上读到,
System.loadLibrary
只适用于查看普通文件(不一定是项目文件)。

在android
.jar
文件中除了代码之外,你不能有任何东西,但是,你可以在
.aar
文件中拥有资源


你会发现你的库的
.aar
是你库的可再发行/可重用编译版本。

你可以按照
SWT
的方式来做——将库文件从你的
.jar
文件提取到用户的主目录(因此你确信你有权在其中写入)通过java代码手动执行。
您可以检查
org.eclipse.swt.internal.Library
,method
extract()

的源代码,这样您的单个jar就可以跨Android和常规桌面/服务器Java环境“交叉部署”了吗?那是。。。听起来很有野心。@Max:请检查一下:这与Java的“编译一次,到处运行”的思想有些矛盾。无论如何,这与C无关。共享库绝不是C特定的。这是我的目标,是的@unwind@AndiGeeky这篇文章是为android写的,我已经为它工作了。我的问题更多的是针对java本身。谢谢你的这篇文章,它确实帮助我理解了
.jar
.aar
之间的区别。但是,是否有一种解决方法,可以让我以用户友好的方式使用
.jar
交付我的本机代码?您必须使用aar文件。没有比这更方便用户的了。它们取代了jar文件,所以它仍然是一个要分发的文件。