我使用android构建系统在android中构建了一个动态库。该库为其中的函数提供jni接口。现在我想将这个库包含在一个应用程序(.apk)中。我正在使用eclipse进行应用程序开发。现在,我如何在我的应用程序中使用prebuild dynamice库(.so)?我尝试将它放在我的应用程序的lib文件夹中,但它无法正常工作。
任何指针都表示赞赏。
我没有使用ndk来构建我的.so。
答案 0 :(得分:0)
因为你写'所以'我认为你正在使用NDK。如果你正在使用NDK,我不知道答案。
如果您正在使用“Java”SDK,那么在您的库项目中转到属性 - > Android,并选中“Is Library”。在“apk”项目中,转到“属性” - > Android - >添加。您的图书馆项目应该可用。
此外,“Java Build Path”菜单中添加的任何库(同样在项目属性中)最终都应该在APK中可用。
答案 1 :(得分:0)
我知道它有点老了,但是你已经检查了内置的APK以查看你的.so库是否存在?应该在libs / armeabi文件夹中。
此外,您的.so文件应位于eclipse解决方案的lib / armeabi文件夹中。我猜测armeabi位取决于你的.so文件是为哪个处理器构建的。
此外,我知道如果您的库未被称为lib [name] .so,则在设备上安装apk时不会复制它。所以:
foo.so不复制
此外,您可以使用DDMS(它在eclipse中的视图)和它的文件浏览器来查看它是否已复制到您的设备。它应该在data / data / [packagename] / lib。
下希望这有点帮助!
安迪。
答案 2 :(得分:0)
我在为Android构建Qiqqa时遇到了同样的问题。在你的eclipse android项目下,确保你有一个libs目录(不是它是复数libS而不是单数lib)。在里面用它们的respectibe .so文件创建armeabi / etc子目录。
然后在构建时,eclipse将自动获取此libs目录并在apk中创建相应的lib。 System.loadLibrary(“XXX”)将在您正确的架构上解析为libXXX.so ...
干杯, Jimme