3

我一直在尝试将 .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)

但这没有帮助吗?

4

2 回答 2

2

我认为include $(BUILD_PREBUILT)如果您使用预构建的 .so 文件,您应该使用,并将它们标记为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)
于 2015-09-15T16:24:39.620 回答
-1
LOCAL_MODULE_TAGS := samples

或者

LOCAL_MODULE_TAGS := tests
于 2019-09-03T01:47:49.833 回答