我正在AOSP中编译我自己的应用程序,我想在AOSP中的包/应用程序中添加我自己的应用程序。我有一些*.so
个文件将在我的应用中使用,但如何编写Android.mk
即将使用这些第三方.so
文件?这里是Android.mk
:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SHARED_LIBRARIES :=myprebuilt
LOCAL_STATIC_JAVA_LIBRARIES :=OrbbecJar
LOCAL_SRC_FILES := $(call all-java-files-under, src)\
$(call all-java-files-under, openCVLibrary2410/src)\
openCVLibrary2410/src/main/aidl/org/opencv/engine/OpenCVEngineInterface.aidl
LOCAL_RESOURCE_DIR:= $(LOCAL_PATH)/openCVLibrary2410/res\
$(LOCAL_PATH)/res
LOCAL_CERTIFICATE := platform
LOCAL_PACKAGE_NAME := HelloWorld
include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := OrbbecJar:OrbbecSDKPro_161114_v1.1.2.jar
include $(BUILD_MULTI_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE:=myprebuilt
LOCAL_SRC_FILES:=libs/armeabi-v7a/libHWWrapper.so\
libs/armeabi-v7a/libXnDeviceSensorV2.so\
libs/armeabi-v7a/libXnFormats.so
include $(PREBUILT_SHARED_LIBRARY)
# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
但我可以在我的构建apk中t find
*。so`文件
答案 0 :(得分:3)
您必须将每个预先构建的库声明为单个独立模块。为此,请执行以下步骤:
For more details about Declaring a Prebuilt Library
实施例
# How to fetch the ssl_static lib
include $(CLEAR_VARS)
LOCAL_MODULE := ssl_static
LOCAL_SRC_FILES := <folder_path>/libssl_static.a
include $(PREBUILT_STATIC_LIBRARY)
# shared library
include $(CLEAR_VARS)
LOCAL_MODULE := HWWrapper
LOCAL_SRC_FILES := <folder_path>/libHWWrapper.so
include $(PREBUILT_SHARED_LIBRARY)
答案 1 :(得分:1)
如果您有预构建的静态库(扩展名为.a的库),则@mablevj的解决方案有效。对于共享库(.so扩展名),您需要定义每个.so,因为您无法将所有三个.so文件合并到一个.so文件中。
include $(CLEAR_VARS)
LOCAL_MODULE := HWWrapper
LOCAL_SRC_FILES := libHWWrapper.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := XnDeviceSensorV2
LOCAL_SRC_FILES := libXnDeviceSensorV2.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HWWrapper
LOCAL_SRC_FILES := libXnFormats.so
include $(PREBUILT_SHARED_LIBRARY)
然后它会显示在你的最终.apk中。您还应该将这三个定义放在一个单独的文件中以保持清洁,但这不是必需的。