Android10 移除原生内置应用
  R3jekIqJDwNw 2023年11月02日 89 0

前言 本文列举了四种方式移除原生系统中默认内置的应用(以Email为例),推荐使用方法四


方法一、重命名Email的Android.mk

将Email的Android.mk 重命名为Android.mk.bak,使得在编译时不会加载其mk因此Email应用不会被编译进系统。

packages\apps\Email\Android.mk -> packages\apps\Email\Android.mk.bak

缺点:当需要移除多个应用时不便于统一管理和管控;当需要恢复预置时,修改繁琐 优点:操作简单

方法二、PRODUCT_PACKAGES移除/注释Email

在device/.../*.mk预置Email处删除该应用模块的预置 device/qcom/qssi/base.mk

PRODUCT_PACKAGES := \
    AccountAndSyncSettings \
    DeskClock \
    AlarmProvider \
    Bluetooth \
    BluetoothExt \
    Calculator \
    Calendar \
    Camera \
    CellBroadcastReceiver \
    CertInstaller \
    DrmProvider \
-   Email \
   	Gallery2 \
    LatinIME \
    Music \
    ...

缺点:未记录移除应用,当要还原时繁琐 优点:修改简单,方便批量移除

方法三、使用LOCAL_OVERRIDES_PACKAGES标签

使用LOCAL_OVERRIDES_PACKAGES属性使得指定模块不参与编译. 1、在device下新建Android.mk device/qcom/xxx/Android.mk

+include $(CLEAR_VARS)
+LOCAL_MODULE := remove_unused_apps
+
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+LOCAL_OVERRIDES_PACKAGES += \
+    Email

PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES))

2、PRODUCT_PACKAGES 添加remove_unused_apps device/qcom/qssi/base.mk

+PRODUCT_PACKAGES += \
+    remove_unused_apps

原理:

  • LOCAL_OVERRIDES_PACKAGES表示使用某以模块替换/覆盖其定义的模块,使得一个或多个模块不参与系统编译,从而达到移除指定应用的目的。
  • LOCAL_MODULE_CLASS 用来定义了模块类型和预置路径。 LOCAL_MODULE_CLASS := ETC //其他类型模块,预置于/system/etc LOCAL_MODULE_CLASS := STATIC_LIBRARIES //静态库类型,预置于/system/lib LOCAL_MODULE_CLASS := EXECUTABLES //可执行文件类型,预置于/system/bin LOCAL_MODULE_CLASS := JAVA_LIBRARIES //jar包类型 LOCAL_MODULE_CLASS := SHARED_LIBRARIES //动态库,预置于/system/lib LOCAL_MODULE_CLASS := APPS //apk类型

缺点:预置了多余etc目录

方法四、配置TARGET_REMOVE_PACKAGES属性

新定义TARGET_REMOVE_PACKAGES属性用于移除应用 build/make/core/main.mk

$(eval ### Filter out the overridden packages and executables before doing expansion) \
   $(eval _pif_overrides := $(call module-overrides,$(_pif_modules))) \
   $(eval _pif_modules := $(filter-out $(_pif_overrides), $(_pif_modules))) \
+  $(eval _pif_modules := $(filter-out $(TARGET_REMOVE_PACKAGES), $(_pif_modules))) \
   $(eval ### Resolve the :32 :64 module name) \

在device的mk中设置TARGET_REMOVE_PACKAGES属性 device/qcom/qssi/base.mk

+TARGET_REMOVE_PACKAGES := \
+     Provision

优点:方便管理和记录默认应用的移除

总结

虽然上述方法都能移除原生应用Email,但综合考虑推荐一劳永逸的方法四移除原生应用,方便移除多个应用和重新预置应用,代码功能清晰明确。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  R3jekIqJDwNw   2023年11月12日   21   0   0 android关机
R3jekIqJDwNw