Android预装第三方app

本文详细介绍了Android系统中预装第三方应用的打包过程,包括如何解压APK,提取lib目录下的.so库文件,并根据设备架构选择对应的库进行打包。在预签名模式下,对不同架构的库文件(如arm64-v8a, armeabi-v7a, armeabi)进行处理,最终构建适用于特定平台的32位版本。该流程对于理解Android系统的预装应用处理机制至关重要。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值