如何创建一个包含本机代码的库和用于android的纯java

时间:2016-06-30 18:57:11

标签: android android-ndk java-native-interface android-library native-code

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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