MTK内置第三方APP-卸载不可卸载-签名问题


需求

  1. 在mtk Android12或者13 系统上面内置一个apk,不可卸载
  2. 在mtk Android12或者13 系统上面内置一个apk,可卸载
  3. 内置应用是否需要系统签名

备注

  • 不同的平台内置方式不一致
  • 重点指导流程和配置文件位置,方便内置

需求实现

内置apk 不可卸载

涉及到修改

device\mediatek\system\common\device.mk
vendor\mediatek\proprietary\packages\3rd-party

案例-内置美图秀秀app

device.mk 添加配置
device.mk 涉及到的配置内容很多,部分配置如下

# for 3rd-party

PRODUCT_PACKAGES += zxappstore
PRODUCT_PACKAGES += zxlaunchernohome
PRODUCT_PACKAGES += fisetp
PRODUCT_PACKAGES += tffwb
PRODUCT_PACKAGES += weixinOld
PRODUCT_PACKAGES += xiping
PRODUCT_PACKAGES += meituxiuxiu

其中 meituxiuxiu 就是 美图秀秀app 的一个目录名,这个目录对应的就是 vendor\mediatek\proprietary\packages\3rd-party 目录下的app 文件夹
3rd-party目录添加内置的apk 内容

在 3rd-party 目录下创建meituxiuxiu ,放置美图秀秀apk、.mk 文件、.so 库文件,如图所示
在这里插入图片描述

*.mk 添加配置
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := meituxiuxiu
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PRODUCT_MODULE := true
##LOCAL_PROPRIETARY_MODULE := true
LOCAL_ENFORCE_USES_LIBRARIES := false
LOCAL_DEX_PREOPT := false
LOCAL_MULTILIB := 64
LOCAL_PREBUILT_JNI_LIBS := $(sort $(shell cd $(LOCAL_PATH) ; find -L lib/arm64-v8a -name "*.so"))
include $(BUILD_PREBUILT)

其中 meituxiuxiu 就是 美图秀秀app 的一个目录名,这个目录对应的就是 vendor\mediatek\proprietary\packages\3rd-party 目录下的app 文件夹

添加.so 到对应的文件夹

.so 库,根据平台放置对应的库文件,比如 在当前目录下创建 lib/arm64-v8a 文件夹,然后将apk 中的.so 库,取出来放置进去

最后编译看效果
在这里插入图片描述
在这里插入图片描述

内置apk 可卸载

参考 MTK平台配置应用可卸载

修改的文件

vendor\mediatek\proprietary\frameworks\base\data\etc\pms_sysapp_removable_system_list.txt

为什么要在 pms_sysapp_removable_system_list.txt 这个文件里面修改呢,且看 device\mediatek\system\common\device.mk 文件配置:

# Add for PMS support removable system app
ifneq ($(strip $(MTK_BASIC_PACKAGE)), yes)
  ifeq ($(strip $(MSSI_MTK_CTA_SET)), yes)
    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)
  endif
endif

在配置文件中添加包名即可,如下:

com.android.quicksearchbox
com.android.calendar
com.android.dreams.basic
com.android.musicfx
com.android.calculator2
com.android.email
com.android.exchange
cn.readpad.whiteboard
com.qiyi.video.pad
com.gotokeep.keep
cn.kuwo.player
com.tencent.android.qqdownloader
com.sohu.inputmethod.sogou
com.mt.mtxx.mtxx

编译,刷机,效果如下

在这里插入图片描述

签名配置

配置文件

配置apk 签名,apk 是用自己的签名还是需要用系统签名
且看配置apk 位置对应的签名配置

其中配置.mk 文件如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := meituxiuxiu
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PRODUCT_MODULE := true
##LOCAL_PROPRIETARY_MODULE := true
LOCAL_ENFORCE_USES_LIBRARIES := false
LOCAL_DEX_PREOPT := false
LOCAL_MULTILIB := 64
LOCAL_PREBUILT_JNI_LIBS := $(sort $(shell cd $(LOCAL_PATH) ; find -L lib/arm64-v8a -name "*.so"))
include $(BUILD_PREBUILT)

LOCAL_CERTIFICATE 属性值

在我们内置某个apk的时候都会带有Android.mk,这里面就写明了该APK使用的是什么签名,如:

LOCAL_CERTIFICATE := platform

表明使用的是platform签名

LOCAL_CERTIFICATE := PRESIGNED

表明使用的是apk原本的签名,记住这里的PRESIGNED需要大写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItJavawfc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值