android图标底色问题,debug与release不一致

背景

在android 8(sdk 26)之前的版本,直接使用图片文件作为图标,开发时比较容易控制图标,但是不同的安卓定制版本就不容易统一图标风格了。

在android 8及之后的版本,图标对应的是ic_launcher.xml,用两层合并起来:背景与前景,在不同厂家的定制版本中再加一层蒙板,就可以实现统一风格,比如都加一个圆角矩形作为蒙板,则所有图标都变成了圆角矩形图标,加一个圆形蒙板就全部变成圆形图标。

<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@color/ic_launcher_background"/>
    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

问题

最近因为发布release版本,发现debug版本图标显示的底色与ic_launcher_background定义一致,但是release版本死活改不掉,是系统默认的浅绿色。这个问题困扰了很久,一直没有管它。因为要发布到应用市场审核,说图标不一致,被打回,所以不得不定位一下。

在网络上找了很久,也问了做过多年开发的人,找不到答案。中途也怀疑过release优化,于是在build.gradle中去掉minifyEnabled、shrinkResources,还是一样。搞了几个小时,无果。

搞不定时,真该睡一觉。第二天早晨,不得已,在android 7上安装了一下,发现release图标是正确的,说明android7的确是直接用图片文件做图标的,所以不受影响。所以猜测是ic_launcher.xml中背景色在release与debug中定义不同,导致在android8中显示不一致。

仔细查看ic_launcher.xml文件,无意中将鼠标停在ic_launcher_background上面,出现下面的窗口,下面的绿色就是怎么也去不掉的那个颜色。

在工程中搜索#3DDC84,竟然在src/release目录下有同名的定义。什么时候产生的,我真的不清楚,应该是用来控制多版本发布的。在androidstudio的工程中也看不到这个目录,所以很不容易定位这个问题。

解决办法

删掉它就可以了,再次查看ic_launcher_background,只有一个颜色了。或者两个地方定义成一样的也可以。


 

                

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-09 08:58:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-09 08:58:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-09 08:58:04       82 阅读
  4. Python语言-面向对象

    2024-05-09 08:58:04       91 阅读

热门阅读

  1. 【负载均衡在线OJ项目日记】运行功能开发

    2024-05-09 08:58:04       29 阅读
  2. QSPI与SDIO差异

    2024-05-09 08:58:04       33 阅读
  3. consul安装搭建

    2024-05-09 08:58:04       32 阅读
  4. 恒生电子,快手25届实习内推

    2024-05-09 08:58:04       32 阅读
  5. 前端如何给特定的组件设置缓存并处理定位问题?

    2024-05-09 08:58:04       38 阅读
  6. 预编码算法学习笔记

    2024-05-09 08:58:04       40 阅读
  7. 几个远程查看电脑在线、MAC、主机名的DOS命令

    2024-05-09 08:58:04       34 阅读
  8. Android Native发布广播Intent步骤和原理解析

    2024-05-09 08:58:04       26 阅读
  9. Mysql 数据库 开发规范

    2024-05-09 08:58:04       29 阅读