【问题标题】:Building System App With Prebuilt .so Library使用预建的 .so 库构建系统应用程序
【发布时间】:2013-04-09 18:42:56
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: android android-library android-build


    【解决方案1】:

    您可能希望根据this answerthis one 中的建议以及groups thread 中的建议检查您的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所需的本​​机库,我将其作为系统应用程序包含在我的自定义系统构建中。

    【讨论】:

    • 您原来的 makefile 有什么错误?你是如何更新 makefile 的?
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2010-12-25
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多