使用预编译的.so库构建系统应用程序

4
我已经卡在这里一周了,试图将第三方.so库与我的应用程序一起构建到自定义Android系统中。我遵循了http://www.maxters.net/2012/05/adding-prebuilt-shared-library-to-android-build-system/,并成功地将.so库添加为预构建的共享库到Android Build System中。现在我可以在../out/target/product/crespo4g/obj/lib/看到.so库。
但是,此目录中的库在刷机时不会迁移到设备上。我的.so库也未出现在/data/data/my_app_name/lib中。因此,在执行System.loadLibrary()时发生UnsatisfiedLinkError。
我认为有三种解决方法,但不知道如何实施:
1.也许我的应用程序未能告诉编译器我的.so与我的应用程序一起作为整体存在,因此.so库未随我的应用程序编译到系统映像中。但是我确实声明了“LOCAL_STATIC_LIBRARIES := libXX”,是否有什么问题?
2.有没有一种方法可以将我的.so库构建到/system/lib/中?/system/lib/下的so库源自哪里?
我是Android构建的新手,请帮忙。。
谢谢!
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所需的原生库,我将其包含在自定义系统构建中作为系统应用程序。

你的原始 makefile 有什么错误?你是如何更新 makefile 的? - Juuso Ohtonen

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