将预构建库添加到安卓apk

3

我使用Android Build System构建了一个动态库。该库提供了内部函数的JNI接口。现在,我想把这个库包含到一个应用程序(.apk)中。我正在使用eclipse进行应用程序开发。那么,我该如何在我的应用程序中使用预构建的动态库(.so)?我试着将它放在我的应用程序的lib文件夹中,但它没有起作用。

欢迎提供任何指针。

我没有使用NDK来构建我的.so文件。

3个回答

0

由于您提到了“so”,我认为您正在使用NDK。如果您正在使用NDK,我不知道答案。

如果您正在使用“Java” SDK,则在库项目中转到属性 -> Android,并检查“Is Library”。在您的“apk”项目中,转到属性 -gt; Android -> 添加。然后您的库项目应该可用。

此外,在“Java Build Path”菜单(同样在项目属性中)中添加的任何库最终都应该在APK中可用。


不,我没有使用NDK。我已经将我的库与Android代码一起构建了。 - cppdev
好的,那么无论如何我的回答都没用了 :P。 - Vicente Plata

0

我在为 Android 构建 Qiqqa 时遇到了同样的问题。在您的 Eclipse Android 项目中,请确保您有一个 libs 目录(注意它是复数 libS 而不是单数 lib)。在其中创建 armeabi / etc 子目录及其相应的 .so 文件。

然后,当您构建时,Eclipse 将自动获取此 libs 目录并在您的 apk 中创建相应的库。System.loadLibrary("XXX") 然后将解析为正确架构上的 libXXX.so...

干杯, Jimme


0

我知道这可能有点老了,但你是否检查过构建的 APK 文件,看看你的 .so 库是否在其中?应该在 libs/armeabi 文件夹中。

此外,你的 .so 文件应该在 Eclipse 解决方案中的 lib/armeabi 文件夹中。我猜 armeabi 位取决于你的 .so 文件是为哪个处理器构建的。

另外,我知道如果你的库不叫做 lib[name].so,在设备上安装 apk 时它就不会被复制。所以:

  • libfoo.so 复制
  • foo.so 不复制

同样,你可以使用 DDMS(它是 Eclipse 中的一个视图)和它的文件浏览器来查看它是否已经被复制到你的设备上。它应该在 data/data/[packagename]/lib 下面。

希望这能有所帮助!

安迪。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接