Android 动态替换桌面 Logo 实践记录(`activity-alias`)

背景

项目中需要支持"动态替换 App 桌面图标"(活动图标、节日图标等)。

本次主要实践的是 方案1:activity-alias ,并补充评估了 方案2:双启动入口


方案对比

方案1:activity-alias(本次落地)

参考:https://27house.cn/archives/1342

核心思路:

  • 保留真实启动 Activity
  • 通过多个 activity-alias 配置不同图标
  • 运行时通过 PackageManager#setComponentEnabledSetting 启停 alias,实现动态图标切换

方案2:两个启动入口

参考:https://github.com/windfone/DynamicIcon/blob/main/app/src/main/AndroidManifest.xml

特点:

  • 配置两个 launcher 入口
  • 冷启动后,出出现两个App进程

实践中遇到的问题与结论

1. 新图标由代码控制后,发版不要轻易删除 alias 列表(高风险)

参考:

现象

覆盖安装后,如果当前桌面展示的图标对应 alias 在新版本被删除,可能出现:

  • 点击桌面图标无法打开
  • 系统提示找不到入口
  • 直接崩溃

原因

系统 Launcher 可能仍保留旧组件引用;新版本删除 alias 后,该组件失效。

结论

  • 历史上线过的 alias 不要直接删除
  • 可"保留但禁用",不要"彻底移除"
  • alias 应按兼容协议管理(只增不减,谨慎清理)

2. 开发工具编译安装时报错:找不到启动页面

报错示例:

text 复制代码
Activity class {com.imaginer.xxx/com.imaginer.xxx.activity.welcome.ACT_SplashScreen} does not exist
相关推荐
2501_932750269 小时前
Android BottomNavigationView 入门介绍
android
Godikov11 小时前
硬件异步事件下的业务一致性:智能柜领取/归还流程的竞态设计
android
Godikov11 小时前
不用 Netty:Android 手写 TCP 客户端实战——自定义协议帧、粘包处理与可靠重连
android
事圆则缓11 小时前
Java 面向对象如何落到 Android View 体系
android
iPad协议个微协议12 小时前
# 微信自动营销系统如何基于 WechatApi 做事件驱动设计
android·微信·企业微信·个人开发·wechatapi·微信个人号开发
AirDroid_cn12 小时前
隐私沙盒:第三方应用读取剪切板内容如何拦截?
android·gitee
2501_9159184114 小时前
怎么把 Python 写的 Flet 应用打包成 iOS App 并上架 App Store?
android·ios·小程序·https·uni-app·iphone·webview
邪修king16 小时前
Re:Linux系统篇(二十六):文件系统(二):Ext 文件系统底层详解:从 inode、块组到软硬链接,结合 Windows 讲透文件管理本质
android·java·linux
又见情义16 小时前
RK3568 Android 13 版本号管理实战:基于 ROCKCHIP_BUILD_NUMBER 的定制化方案
android
终端安全笔记17 小时前
iOS 27 强制 TLS 1.2:租赁设备的注册链路会在哪一环断
android·网络·安全·ios·智能手机