4

我在这里被困了一个星期,试图将第 3 方 .so 库与我的应用程序一起构建到自定义 Android 系统中。我关注了http://www.maxters.net/2012/05/adding-prebuilt-shared-library-to-android-build-system/并成功地将 .so lib 作为预建共享库添加到 Android 构建系统。现在我可以在 ../out/target/product/crespo4g/obj/lib/ 看到 .so lib。

但是这个目录中的库在刷机时不会被迁移到设备上。我的 .so lib 也没有出现在 /data/data/my_app_name/lib 中。所以UnsatisfiedLinkError在执行System.loadLibrary()时发生。

我认为有三种方法可以解决这个问题,但就是不知道如何实现:

  1. 也许我的应用程序未能向编译器表明我的 .so 与我的应用程序一起作为一个整体,因此 .so 库没有与我的应用程序一起编译到系统映像中。但我确实通过“LOCAL_STATIC_LIBRARIES := libXX”声明,有什么问题吗?
  2. 有没有办法将我的 .so lib 构建到 /system/lib/ 中?/system/lib/下的so库是从哪里派生的?

我是Android构建的新手,请帮助..

谢谢!

4

1 回答 1

1

您可能希望根据此答案中的建议检查您的 makefile和这个以及此组线程中的建议

更新 我原来的 makefile 不正确,但这对我构建 ICS 有用:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libmozglue
LOCAL_SRC_FILES := libmozglue.so
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE := libplugin-container
LOCAL_SRC_FILES := libplugin-container.so
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)

以上是firefox for android所需的本​​机库,我将其作为系统应用程序包含在我的自定义系统构建中。

于 2013-07-15T04:33:51.347 回答