如何为android制作包含本机代码和纯java的库

Tej*_*jas 3 java-native-interface android native-code android-ndk android-library

我已经为 android 的不同架构交叉编译了本机代码,并在 android studio 中使用了相应的 jni 包装类。现在我想让它作为一个库使用。我有两个问题:

1)我可以 jar .so 文件和 jni 文件来制作库吗?(不是 .aar 因为我的库只包含纯 java 和本机代码,没有 android 相关的东西,如 .xml、res 等)如果是这样怎么办应该是它的结构?

2) 如果我不能创建 .jar 文件,那么我剩下的就是创建 .aar 文件。这将包括使用android studio。我可以在没有 android studio 的情况下做吗?

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

Tej*_*jas 5

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