需求场景
此方法适用一些三方apk(包括带so库的apk)导入
首先存放apk,目录可以选择一些三方路径,或者package/app
需求实现
我选择存放的路径
vendor/wheatek/packages/3rd/xxx(packageName)/
放入xxx.apk,及Android.mk文件
Android.mk文件如下
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := xxx
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_SRC_FILES := xxx.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_DEX_PREOPT := false
# 最终保存到的路径,可以自定义
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/operator/app
include $(BUILD_PREBUILT)
选择可以执行的device.mk将需要编译的apk包名传入,如
vendor/wheatek/device/device-system.mk
# 将apk添加编译名单
PRODUCT_PACKAGES += xxx(apk名)
到这里即实现了预置,但是有些apk需要可以卸载,有时无法卸载,可以使用以下方法将apk设置成可以卸载
首先需要查看白名单是否已经编译进去,device/mediatek/system/common/device.mk中是否已经包含下面一段
代码位置
alps/device/mediatek/system/common/device.mk
查看下面方法是否注释了,如果注释可以打开
PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists, \
vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_system_list.txt:system/etc/permissions/pms_sysapp_removable_system_list.txt)
PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists, \
vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_vendor_list.txt:system/etc/permissions/pms_sysapp_removable_vendor_list.txt)
第二步,将内置的apk的包名放到下面位置,如果其他一个生效了可以仅放在其中一个。vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_system_list.txt
vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_vendor_list.txt
代码格式如下
com.example.aaa
com.example.bbb
到此基本可以实现可卸载,如果还是不生效,可以看下是否有其他.mk文件将pms_sysapp_removable_system_list文件或者pms_sysapp_removable_vendor_list文件删除了,屏蔽掉删除的即可。