我使用Android Build System构建了一个动态库。该库提供了内部函数的JNI接口。现在,我想把这个库包含到一个应用程序(.apk)中。我正在使用eclipse进行应用程序开发。那么,我该如何在我的应用程序中使用预构建的动态库(.so)?我试着将它放在我的应用程序的lib文件夹中,但它没有起作用。
欢迎提供任何指针。
我没有使用NDK来构建我的.so文件。
我使用Android Build System构建了一个动态库。该库提供了内部函数的JNI接口。现在,我想把这个库包含到一个应用程序(.apk)中。我正在使用eclipse进行应用程序开发。那么,我该如何在我的应用程序中使用预构建的动态库(.so)?我试着将它放在我的应用程序的lib文件夹中,但它没有起作用。
欢迎提供任何指针。
我没有使用NDK来构建我的.so文件。
由于您提到了“so”,我认为您正在使用NDK。如果您正在使用NDK,我不知道答案。
如果您正在使用“Java” SDK,则在库项目中转到属性 -> Android,并检查“Is Library”。在您的“apk”项目中,转到属性 -gt; Android -> 添加。然后您的库项目应该可用。
此外,在“Java Build Path”菜单(同样在项目属性中)中添加的任何库最终都应该在APK中可用。
我在为 Android 构建 Qiqqa 时遇到了同样的问题。在您的 Eclipse Android 项目中,请确保您有一个 libs 目录(注意它是复数 libS 而不是单数 lib)。在其中创建 armeabi / etc 子目录及其相应的 .so 文件。
然后,当您构建时,Eclipse 将自动获取此 libs 目录并在您的 apk 中创建相应的库。System.loadLibrary("XXX") 然后将解析为正确架构上的 libXXX.so...
干杯, Jimme
我知道这可能有点老了,但你是否检查过构建的 APK 文件,看看你的 .so 库是否在其中?应该在 libs/armeabi 文件夹中。
此外,你的 .so 文件应该在 Eclipse 解决方案中的 lib/armeabi 文件夹中。我猜 armeabi 位取决于你的 .so 文件是为哪个处理器构建的。
另外,我知道如果你的库不叫做 lib[name].so,在设备上安装 apk 时它就不会被复制。所以:
同样,你可以使用 DDMS(它是 Eclipse 中的一个视图)和它的文件浏览器来查看它是否已经被复制到你的设备上。它应该在 data/data/[packagename]/lib 下面。
希望这能有所帮助!
安迪。