AOSP源码中设置自定义默认Launcher(保留双Launcher)
在AOSP中设置自定义Launcher为默认Home且保留Launcher3的方法
因为LOCAL_OVERRIDES_PACKAGES会直接移除被覆盖的包(也就是Launcher3),不符合你要保留两个Launcher的需求,所以可以用以下几种方式来设置自定义Launcher为默认Home:
方法1:修改默认应用配置文件
- 打开AOSP源码里的
frameworks/base/packages/SettingsProvider/res/values/defaults.xml - 添加或替换以下两个配置项,把里面的包名和Activity路径换成你自定义Launcher的信息:
<string name="default_home_package" translatable="false">com.your.custom.launcher</string> <string name="default_home_class" translatable="false">com.your.custom.launcher.MainActivity</string> - 要是文件里本来就有这两个字段,直接替换成你的自定义Launcher信息就行。
方法2:用设备专属Overlay配置(推荐,不修改通用源码)
- 如果你不想改动AOSP通用框架代码,可以在设备目录下创建Overlay:
device/<你的厂商名>/<你的设备名>/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml - 在这个文件里添加同样的配置项,覆盖默认值:
<string name="default_home_package" translatable="false">com.your.custom.launcher</string> <string name="default_home_class" translatable="false">com.your.custom.launcher.MainActivity</string> - 另外也可以在
device/<你的厂商名>/<你的设备名>/system.prop里加系统属性:ro.com.android.launcher=com.your.custom.launcher ro.com.android.launcher.activity=com.your.custom.launcher.MainActivity
方法3:通过启动脚本设置
- 写一个简单的shell脚本
set_default_home.sh,放在device/<你的厂商名>/<你的设备名>/prebuilt/etc/目录下,内容如下:#!/system/bin/sh pm set-home-activity com.your.custom.launcher/.MainActivity - 给脚本加执行权限:在设备的
Android.mk里添加:include $(CLEAR_VARS) LOCAL_MODULE := set_default_home.sh LOCAL_MODULE_TAGS := optional LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_PATH := $(TARGET_OUT_ETC) LOCAL_SRC_FILES := $(LOCAL_MODULE) LOCAL_MODULE_SUFFIX := .sh LOCAL_MODULE_OWNER := <你的厂商名> include $(BUILD_PREBUILT) - 然后在
device/<你的厂商名>/<你的设备名>/init.<设备名>.rc里添加启动逻辑:on boot start set_default_home service set_default_home /system/bin/sh /system/etc/set_default_home.sh class main oneshot seclabel u:r:system_app:s0
这样编译出来的系统会直接把你的自定义Launcher设为默认Home,同时保留Launcher3,不会弹出选择提示。
内容的提问来源于stack exchange,提问作者Margish thumar
相关产品推荐
相关产品推荐

