我一直在尝试将 .so 库作为我在 AOSP 中的应用程序的一部分。可以用 Android.mk 来完成。以下是我在 pacakges/app 目录中的应用程序的 Android.mk:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := OpentokSample
LOCAL_CERTIFICATE:= platform
LOCAL_JNI_SHARED_LIBRARIES=libopentok
include $(BUILD_PACKAGE)
include $(call all-makefiles-under,$(LOCAL_PATH))
下面是包含 libopentok.so 的 Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libopentok
LOCAL_PREBUILT_LIBS := opentok.so
include $(BUILD_SHARED_LIBRARY)
但这没有帮助吗?
最佳答案
我认为如果您使用预构建的 .so 文件,您应该使用 include $(BUILD_PREBUILT)
,并将它们标记为 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
。并且您需要在 LOCAL_REQUIRED_MODULES
中列出依赖项。
这里有一个示例 Android.mk,它添加了一个预编译的 apk 应用程序并将其 .so 库放入系统 lib 文件夹中:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := MyApp
LOCAL_CERTIFICATE := platform
LOCAL_REQUIRED_MODULES := libamrcodec libecies
LOCAL_SRC_FILES := MyApp.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := libamrcodec
LOCAL_SRC_FILES := libs/armeabi/libamrcodec.so
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_PRELINK_MODULE := false
#LOCAL_MODULE_PATH := system/lib
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := libecies
LOCAL_SRC_FILES := libs/armeabi/libecies.so
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_PRELINK_MODULE := false
#LOCAL_MODULE_PATH := system/lib
include $(BUILD_PREBUILT)
关于android-source - 在 AOSP Lollipop 中添加 .so 库作为包/应用程序的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472228/