Android12Launcher3实现应用裁剪

151 阅读1分钟

Android12Launcher3实现应用裁剪

1.移除系统应用的关键代码如下:

在device.mk或device-verdor.mk添加如下配置

2.日历从安装列表中移除

PRODUCT_PACKAGES := (filteroutCalendar,(filter-out Calendar, (PRODUCT_PACKAGES))

3.联系人从安装列表中移除

PRODUCT_PACKAGES := (filteroutContactsContactsProvider,(filter-out Contacts ContactsProvider, (PRODUCT_PACKAGES))

3.搜索

PRODUCT_PACKAGES := (filteroutQuickSearchBox,(filter-out QuickSearchBox, (PRODUCT_PACKAGES))

4.图库

PRODUCT_PACKAGES := (filteroutGallery2,(filter-out Gallery2, (PRODUCT_PACKAGES))

5.文件管理

PRODUCT_PACKAGES := (filteroutDocumentsUI,(filter-out DocumentsUI, (PRODUCT_PACKAGES))

6.时钟

PRODUCT_PACKAGES := (filteroutDeskClock,(filter-out DeskClock, (PRODUCT_PACKAGES))

7.相机

PRODUCT_PACKAGES := (filteroutCamera2,(filter-out Camera2, (PRODUCT_PACKAGES))

8.定义要移除的应用列表

REMOVE_PACKAGES := Calendar Contacts ContactsProvider QuickSearchBox Gallery2 DocumentsUI DeskClock Camera2

9.一次性从安装列表中移除所有指定应用

PRODUCT_PACKAGES := (filterout(filter-out (REMOVE_PACKAGES), $(PRODUCT_PACKAGES))

10.从安装列表中移除不需要的系统应用

PRODUCT_PACKAGES := (filterout Calendar Contacts ContactsProvider QuickSearchBox Gallery2 DocumentsUI DeskClock Camera2, (filter-out \ Calendar \ Contacts \ ContactsProvider \ QuickSearchBox \ Gallery2 \ DocumentsUI \ DeskClock \ Camera2, \ (PRODUCT_PACKAGES))

11.在对应系统应用的mk或者bp文件中添加以下配置:

Calendar日历应用 Android.mk LOCAL_PATH:= $(call my-dir)

12.完全跳过编译

(warning"Calendarmoduleisdisabledskippingbuild)include(warning "Calendar module is disabled - skipping build) include (CLEAR_VARS) #禁用Calendar BUILD_CALENDAR := false #include $(BUILD_PACKAGE)

13.Contacts联系人

Android.bp
android_app {
    name: "Contacts",
    enabled: false,  // 直接禁用编译
    srcs: [
        "src/**/*.java",
        "src-bind/**/*.java",
    ],
    
static_libs: [
    "com.android.phone.common-lib",

    "com.google.android.material_material",
    "androidx.transition_transition",
    "androidx.legacy_legacy-support-v13",
    "androidx.appcompat_appcompat",
    "androidx.cardview_cardview",
    "androidx.recyclerview_recyclerview",
    "androidx.palette_palette",
    "androidx.legacy_legacy-support-v4",
    "android-common",
    "com.android.vcard",
    "guava",
    "libphonenumber",
],

certificate: "shared",
product_specific: true,
privileged: true,
required: ["privapp_whitelist_com.android.contacts"],

optimize: {
    proguard_flags_files: ["proguard.flags"],
},

sdk_version: "system_current",
min_sdk_version: "21",
}

14.总结:

​ 上面的代码开源改完一个验证一次,基本上都么有问题,我在实际项目中都有使用,完全可以正常编译,当然由于Android版本的差异性,可能编译文件不一样,有的是.bp,有的是.mk,不影响使用,可以直接删除apk和文件,还可以只是不加入编译,那种适合用哪种.