Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为android创建包含本机代码和纯java的库_Android_Android Ndk_Java Native Interface_Android Library_Native Code - Fatal编程技术网

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

如何为android创建包含本机代码和纯java的库,android,android-ndk,java-native-interface,android-library,native-code,Android,Android Ndk,Java Native Interface,Android Library,Native Code,我为android的不同架构交叉编译了本机代码,并在android studio中使用了相应的jni包装器类。现在我想让它成为一个图书馆。我有两个问题: 1) 我可以用jar文件和jni文件来创建库吗?(不是.aar,因为我的库只包含纯java和本机代码,没有与android相关的东西,如.xml、res等)如果可以,它的结构应该是什么 2) 如果我不能创建.jar文件,那么剩下的就是创建.aar文件。这将包括使用android studio。没有android studio我能做到吗 编辑1:

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

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

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

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

幸运地找到了一种方法。aar本身就是一个简单的zip文件,其结构如指定的那样。我所做的是将所有.class文件(在适当的包文件夹中)放入classes.jar,创建一个空文件夹“res”,将所有.so文件放入jni文件夹(具有适当的体系结构),并制作一个简单的包含基本标记的AndroidManifest.xml。然后我将它们放入扩展名为.aar的文件中(比如mylib.aar)。我将.aar复制到另一个项目的libs文件夹中,并在应用程序的
build.gradle
(比如
compile(名称:'mylib',分机:'aar')
)中对它进行了测试。而且效果很好。

我相信您应该能够将.so文件和Java文件添加到库中。但是,为了能够使用jar中的.so文件,您需要将其解压缩到设备上的某个位置,以加载库。我还没有测试过它,但如果我有机会确保它有效,我会发布一个答案。你是说这个吗?我不想那样做。如果我jar文件,然后将其作为依赖项添加到我的项目中,那么它应该自动将.so放入libs中,以便jni可以找到它。