Android预装第三方app
Android.mk
解压apk中的lib并对*.so库文件进行整体打包,PRESIGNED使用apk预签名
LOCAL_PATH := $(call my-dir)
# qqmusic
include $(CLEAR_VARS)
LOCAL_MODULE := qqmusic
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
APK_LibList :=
$(subst $(LOCAL_PATH)/$(LOCAL_MODULE)_uncompressedlibs,,\
$(foreach FILE,$(shell unzip -l $(LOCAL_PATH)/$(LOCAL_SRC_FILES) 'lib/*.so'|grep 'arm'),$(eval APK_LibList += $(FILE))))
ARM64_LIB := $(findstring arm64-v8a,$(APK_LibList))
ARMV7A_LIB := $(findstring armeabi-v7a,$(APK_LibList))
ARM_LIB := $(findstring armeabi,$(APK_LibList))
ARCH_LIB := $(if $(TARGET_ARCH),$(if $(ARMV7A_LIB),$(ARMV7A_LIB),$(ARM_LIB)))
TARGET_BIT := $(if $(findstring arm64,$(ARCH_LIB)),64,32)
$(info $(LOCAL_MODULE) $(ARCH_LIB) $(TARGET_BIT))
PRIVATE_EMBEDDED_JNI_LIBS := 'lib/$(ARCH_LIB)/*.so'
$(info $(LOCAL_MODULE) $(PRIVATE_EMBEDDED_JNI_LIBS))
LOCAL_32_BIT_ONLY := true
LOCAL_MULTILIB := 32
JNI_LIBS :=
$(foreach FILE,$(shell if unzip -l $(LOCAL_PATH)/$(LOCAL_SRC_FILES) $(PRIVATE_EMBEDDED_JNI_LIBS) > /dev/null ; then \
rm -rf $(LOCAL_PATH)/$(LOCAL_MODULE)_uncompressedlibs && \
mkdir $(LOCAL_PATH)/$(LOCAL_MODULE)_uncompressedlibs; \
unzip $(LOCAL_PATH)/$(LOCAL_SRC_FILES) $(PRIVATE_EMBEDDED_JNI_LIBS) -d $(LOCAL_PATH)/$(LOCAL_MODULE)_uncompressedlibs > /dev/null && \
find $(LOCAL_PATH)/$(LOCAL_MODULE)_uncompressedlibs -name "*.so"; \
fi),$(eval JNI_LIBS += $(FILE)))
LOCAL_PREBUILT_JNI_LIBS := $(subst $(LOCAL_PATH),,$(JNI_LIBS))
include $(BUILD_PREBUILT)
device-common.mk
LOCAL_PATH := vendor/common
#app
PRODUCT_PACKAGES += qqmusic
在device/文件夹的device.mk中包含device-common.mk
include vendor/common/device-common.mk