我必须在AOSP源码树中构建一个带有供应商配置的android应用程序。都有一些预构建的.so文件,我已经使用以下配置加载了.so文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PACKAGE_NAME := MySample
LOCAL_CERTIFICATE := platform
# SRC files
#======================================
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
$(call all-Iaidl-files-under, aidl)
LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/aidl
# RES files
#================================================
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_RESOURCE_DIR +=./prebuilts/sdk/current/support/v7/appcompat/res
LOCAL_RESOURCE_DIR +=./prebuilts/sdk/current/support/design/res
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_APPS)
LOCAL_MANIFEST_FILE := AndroidManifest.xml
LOCAL_USE_AAPT2 := true
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_MULTILIB := 32
LOCAL_JNI_SHARED_LIBRARIES := \
libmysamplelib.so
#Adding aapt packages
#==============================================
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat
LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.recyclerview
LOCAL_AAPT_FLAGS += --extra-packages android.support.annotations
LOCAL_AAPT_FLAGS += --extra-packages android.support.v4
LOCAL_AAPT_FLAGS += --extra-packages android.support.design
LOCAL_AAPT_FLAGS += --extra-packages com.google.gson
LOCAL_AAPT_FLAGS += --extra-packages com.squareup.picasso
LOCAL_AAPT_FLAGS += --extra-packages com.google.zxing
LOCAL_AAPT_FLAGS += --extra-packages com.google.android.exoplayer2
LOCAL_AAPT_FLAGS += --extra-packages com.google.android.exoplayer2.source.dash
LOCAL_AAPT_FLAGS += --extra-packages com.google.android.exoplayer2.source.hls
LOCAL_AAPT_FLAGS += --extra-packages com.google.android.exoplayer2.source.smoothstreaming
#Include Static libraries
#===============================
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-recyclerview
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
LOCAL_STATIC_JAVA_LIBRARIES += android-support-annotations
LOCAL_STATIC_JAVA_LIBRARIES += android-support-design
LOCAL_STATIC_JAVA_LIBRARIES += gson
include $(BUILD_PACKAGE)
#Including prebuild libs
#======================================
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := exoplayer2_core:libs/exoplayer-core-2.7.1.aar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += exoplayer2_dash:libs/exoplayer-dash-2.7.1.aar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += exoplayer2_hls:libs/exoplayer-hls-2.7.1.aar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += exoplayer2_smoothstreaming:libs/exoplayer-smoothstreaming-2.7.1.aar
include $(BUILD_MULTI_PREBUILT)
# parsercreator
#========================
include $(CLEAR_VARS)
LOCAL_MODULE := libmysamplelib
LOCAL_SRC_FILES := libs/libmysamplelib.so
LOCAL_MODULE_PATH :=$(TARGET_OUT_VENDOR)/lib
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_32_BIT_ONLY := true
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)
include $(call all-makefiles-under,$(LOCAL_PATH))在目标设备中刷新构建后,应用程序将无法正确加载应用程序。我怀疑correctly.any help不包含.so文件
发布于 2019-06-26 14:55:53
此问题的解决方案。
我已经创建了一个新的.mk(LibCopy.mk)文件,用于在ASOP构建时将.SO文件复制到供应商路径,并且LibCopy.mk将从device.mk文件$(call inherit-product-if-exists, <Your application path>/LibCopy.mk)调用
我的LibCopy.mk如下所示
PRODUCT_COPY_FILES := \vendor/apps/MySample/lib/<architecture>/libmysamplelib.so:vendor/app/MySample/lib/<architecture>/libmysamplelib.so \https://stackoverflow.com/questions/51983553
复制相似问题