如何为 android 创建包含本机代码和纯 java 的库

How to make a library containing native code and pure java for android

我已经针对 android 的不同架构交叉编译了本机代码,并在 android studio 中使用了相应的 jni 包装器 class。现在我想把它作为一个图书馆提供。我有两个问题:

1)我可以直接将 .so 文件和 jni 文件打包成库吗?(不是 .aar 因为我的库只包含纯 java 和本机代码,没有 android 相关诸如 .xml、res 等之类的东西)如果是这样,它的结构应该是什么?

2) 如果我无法创建 .jar 文件,那么我只剩下创建 .aar 文件了。这将包括使用 android 工作室。没有 android 工作室我可以做吗?

编辑 1: 如果我 jar 文件,那么我不想提取 .so 然后使用它。如果我 jar 文件,然后将它(.jar)添加为我项目中的依赖项,那么它应该自动将 .so 放入我的 apk 中的 libs/jni 文件夹中,以便 jni 可以找到它。问题是我该怎么做?(如果可能的话)

幸好找到了方法。因为 .aar 本身是一个简单的 zip 文件,具有指定的结构 here。我所做的是 "jar" 所有 .class 文件(在正确的包文件夹内)到 classes.jar,创建一个空文件夹 "res",将所有 .so 文件放在 jni 文件夹中(具有适当的体系结构)并制作了一个包含基本标签的简单 AndroidManifest.xml。然后我将它们打包到扩展名为 .aar 的文件中(如 mylib.aar)。我已经通过将 .aar 复制到另一个项目的 libs 文件夹并在应用程序的 build.gradle(如 compile(name:'mylib',ext:'aar'))中添加对它的依赖来测试它。而且效果很好。