AutoJs6 icon indicating copy to clipboard operation
AutoJs6 copied to clipboard

华为和荣耀的系统里面app图标没白底

Open DBY2-W00 opened this issue 6 months ago • 1 comments

Image

其它安卓好像是正常的,都有外面的白色正方形底,华为和荣耀的没有,感觉有点不太协调

DBY2-W00 avatar May 29 '25 03:05 DBY2-W00

Android 在 API Level 26 (Android 8.0) [O] 开始, 引入了 自适应图标 (Adaptive Icon) 新特性. 这个特性要求提供前景层 (通常为应用图标本身) 和背景层 (通常为纯色, 渐变色或简单的背景图), 然后以类似上图中 "坚果云" 应用图标的样子显现出来.

AutoJs6 没有遵循上述特性, 而且通过 AndroidManifest.xml 特别强调了 "请尽可能按照透明背景的方式来显示启动器图标", 因此才有上述截图中的图标样式.

事实上, AutoJs6 应该考虑遵循安卓上述特性, 如给出以下解决方案:

  • 默认情况下使用自适应图标 (而非透明背景图标), 以遵循安卓新特性
  • 在设置页面提供选项供用户选择:
    • 自适应图标 [默认]
    • 透明背景图标

你可以等待后续 AutoJs6 发布新版本解决上述问题 (但 AutoJs6 目前已 暂停更新, 重启日期未定), 也可以自己通过修改 AutoJs6 源码并重新打包并安装应用 (需留意签名冲突问题).

源码修改思路:

  1. 去除 AndroidManifest.xml 中显式指定的 icon 属性 (如 android:icon="@drawable/autojs6_material")
  2. 使用 Android Studio 或 IntelliJ IDEA 自带的 Images Asset 功能, 创建自适应图标 (例如以 @drawable/autojs6_material 为前景, 已 #FFFFFF 为背景)
  3. 修改 build.gradle.kts 中 Gradle Flavor 为 "app" 且键值为 "icon" 的 Manifest 占位符为自适应图标的资源名称 (如 "@mipmap/ic_app_launcher_adaptive")

SuperMonster003 avatar Jul 02 '25 10:07 SuperMonster003