我有一个Android项目,它是一个库(标有Is库复选框)和其他需要这些库的Android项目。在库中有三个.jar数据包和一个名为armeabi的文件夹,其中包含7个扩展名为.so的文件。
我在Java构建路径库选项卡中添加了.jar库。 但我无法将库添加到需要这些库的项目中。我想知道是否有任何方法可以在不安装NDK的情况下添加这些库。
如果我需要安装NDK,我该如何继续添加.so库?
非常感谢
答案 0 :(得分:0)
您构建的库(使用NDK)通常出现在项目的libs / armeabi目录中(我不确定您是否可以更改它)。
但是看到你已经有了你的.so文件,我认为如果你手动将它放在libs / armeabi文件夹中它是安全的。然后它会自动与你的apk一起打包。
答案 1 :(得分:0)
您不需要NDK使用* .so文件,只能自己构建一个。
如果您需要* .so文件用于应用,只需将它们放入项目的/libs/armeabi
目录即可。它们将最终出现在由Android构建系统创建的APK中。
要注意的一件事是文件的错误/未记录的行为' 名称。我曾经有一个* .so文件的一个莫名其妙的问题,其名称并非以" lib&#34 ;;开头。它在APK中,但设备上的安装程序会被忽略。只有当我重命名它才能正确安装。
如果您需要库的<.so文件 ,您基本上什么都不做。 Android库系统不是很复杂,甚至比Java在这个领域已经提供的更糟糕(在我看来);没有办法创建一个包含在一个文件中的所有内容的Android库。因此,如果* .jar存档中的Java代码需要* .so文件中的本机函数,那么您必须将两者 * .jar和* .so文件发送到您的客户,作为单独的文件。 (当然,客户端将执行我上面解释的相同操作:将* .so文件放在他们的app项目的/libs/armeabi
目录中。)
答案 2 :(得分:0)
您只需要NDK来构建.so文件,它不需要打包。
.so文件通常会从Android上的.jars中删除,如果您想将这些文件放入您的应用中,您需要自己提取文件并将其放入/libs/armeabi/
,/libs/x86/
等内容适用于Android Studio的eclipse,/jniLibs/armeabi/
,/jniLibs/x86/
等。
如果要打包库并在使用时自动集成.so文件,可以将其打包为.aar而不是.jar并使用gradle:http://tools.android.com/tech-docs/new-build-system/aar-format。
在.aar中,每个体系结构的.so文件都应该放在jni/armeabi/
,jni/x86/
等内部。