Android12Launcher3实现应用裁剪
1.移除系统应用的关键代码如下:
在device.mk或device-verdor.mk添加如下配置
2.日历从安装列表中移除
PRODUCT_PACKAGES := (filter−outCalendar,(PRODUCT_PACKAGES))
3.联系人从安装列表中移除
PRODUCT_PACKAGES := (filter−outContactsContactsProvider,(PRODUCT_PACKAGES))
3.搜索
PRODUCT_PACKAGES := (filter−outQuickSearchBox,(PRODUCT_PACKAGES))
4.图库
PRODUCT_PACKAGES := (filter−outGallery2,(PRODUCT_PACKAGES))
5.文件管理
PRODUCT_PACKAGES := (filter−outDocumentsUI,(PRODUCT_PACKAGES))
6.时钟
PRODUCT_PACKAGES := (filter−outDeskClock,(PRODUCT_PACKAGES))
7.相机
PRODUCT_PACKAGES := (filter−outCamera2,(PRODUCT_PACKAGES))
8.定义要移除的应用列表
REMOVE_PACKAGES := Calendar Contacts ContactsProvider QuickSearchBox Gallery2 DocumentsUI DeskClock Camera2
9.一次性从安装列表中移除所有指定应用
PRODUCT_PACKAGES := (filter−out(REMOVE_PACKAGES), $(PRODUCT_PACKAGES))
10.从安装列表中移除不需要的系统应用
PRODUCT_PACKAGES := (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"Calendarmoduleisdisabled−skippingbuild)include(CLEAR_VARS) #禁用Calendar BUILD_CALENDAR := false #include $(BUILD_PACKAGE)
13.Contacts联系人
kotlin
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,不影响使用.