如何将一个.so文件打包进一个jar文件中?

3

我目前正在开发一个Java库(绑定),其中使用了一些自己编写的本地代码。这些本地代码被编译为多个架构的 .so 文件(arm-v7,i686,x86-64等)。

我知道在Android中,您需要创建一个名为jniLibs的文件夹,并为每个架构创建子文件夹,其中包含适当的.so文件。然后,通过一个Android.mk文件和System.loadLibrary,我可以将这些文件包含到我的代码中。

然而,我不知道如何在普通的Java项目/库中包含这些.so文件。我在网上读到过,System.loadLibrary仅适用于查找普通文件(并不一定是项目文件)。


1
你的单个jar包是用于“跨平台部署”在Android和常规桌面/服务器Java环境中?这听起来很有雄心壮志。 - unwind
1
@Max: 请检查一下这个链接:http://blog.guillaumeagis.eu/setup-andengine-with-android-studio/ - AndiGeeky
1
这在某种程度上与 Java 的“一次编译,到处运行”的理念相矛盾。无论如何,这与 C 无关。共享库并不是 C 特有的。 - too honest for this site
@Max:哦,那就对不起了伙计! - AndiGeeky
好的,现在听起来像是一个XY问题。你试图解决的问题是什么(X)?尝试用单一的分布(Y)来解决它似乎很困难,并且回报很低。 - weston
显示剩余2条评论
2个回答

1

谢谢您的文章,它确实帮助我更好地理解了.jar.aar之间的区别。不过,是否有一种方法可以以用户友好的方式将我的本地代码与.jar一起交付呢? - Max
你必须使用aar文件。没有比这更用户友好的了。它们取代了jar文件,因此仍然是一个要分发的单个文件。 - weston

0
你可以像 SWT 那样做 -- 通过 Java 代码手动将库文件从你的 .jar 文件中提取到用户的主目录(这样你就可以确保有写入权限)。 你可以查看 org.eclipse.swt.internal.Library 的源代码,方法 extract()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接