如何将第三方apk放到系统rom中

需求场景
此方法适用一些三方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文件删除了,屏蔽掉删除的即可。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_34262972

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

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

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

打赏作者

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

抵扣说明:

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

余额充值