为何Google Store下载的应用文字消失,Android Studio虚拟设备显示正常
问题排查与解决方案
深色模式适配问题
你使用的主题父类为Theme.MaterialComponents.DayNight.DarkActionBar,这类自适应主题会跟随系统深色/浅色模式自动切换样式,你当前仅配置了values目录下的主题文件,未创建values-night目录对应的夜间主题配置。当实体机开启深色模式时,系统会自动匹配夜间资源,未配置的情况下文字默认颜色会被系统适配为白色,和你设置的白色背景(tertiary_blue实际值为纯白色)完全重合,就会出现文字看不见的问题。
修复方案二选一:- 在res目录下新建values-night文件夹,创建对应夜间模式的themes.xml,明确配置深色模式下的背景色、文字色等属性,避免系统自动适配导致颜色冲突
- 直接将主题父类替换为固定浅色主题
Theme.MaterialComponents.Light.DarkActionBar,强制应用全局使用浅色模式,不会跟随系统设置切换
全局文字颜色未配置
你当前主题未配置android:textColorPrimary、android:textColorSecondary等全局默认文字颜色属性,所有未单独指定textColor的文本控件都会继承系统默认文字色,不同系统版本、不同系统主题下的默认文字色差异极大,就会出现本地预览正常、上架后不同设备显示异常的问题。
修复方案:在themes.xml中补充全局文字色配置,示例:
<item name="android:textColorPrimary">@color/black</item> <item name="android:textColorSecondary">@color/black</item>
Release包构建配置问题
本地Android Studio运行的是debug包,上架Google Play的是release包,先打一个未签名的release包本地安装测试,如果能复现文字不显示的问题,就排查build.gradle中的release构建配置,检查是否开启了资源混淆、R8压缩时误删了字体、文字相关资源。布局控件颜色配置问题
检查布局文件中的文字颜色是否使用了?android:attr/textColorPrimary这类系统主题属性,未指定固定色值的情况下,在不同系统主题下会出现颜色变化,建议业务控件尽量明确指定textColor属性值。
另外你定义的tertiary_blue颜色值实际为纯白色,和命名不符,如果是想要设置蓝色背景可以修正该色值,避免后续样式调整出现混淆。
内容的提问来源于stack exchange,提问作者Hold The Door

