Flutter修改安卓应用最近任务概览页名称不生效问题
问题现象
- 部分安卓机型的系统最近任务(概览)窗口未读取
AndroidManifest.xml中<application>标签配置的android:label="Mobile®Store"值,错误展示app_name文本 - 桌面应用列表内的应用名称显示正常,全局检索项目手写文件未找到任何
app_name关键词匹配内容 - 参考截图:
- 桌面应用列表名称显示正常:

- 最近任务概览页名称显示错误:

- 桌面应用列表名称显示正常:
根因排查方向与修复方案
- 优先排查Gradle构建配置:90%以上全局搜不到
app_name的同类问题,都是因为模块级build.gradle(含各构建风味、构建类型的独立配置块)中通过resValue "string", "app_name", "xxx"或者manifestPlaceholders动态生成了该字符串资源,这类构建期生成的资源不会存在于手写项目文件中,普通文本搜索无法命中。找到对应配置后直接修改值为Mobile®Store,或删除冗余配置让Manifest的label配置生效即可。 - 检查Activity层级的label配置:最近任务概览页展示的名称默认取当前栈顶Activity的label值,而非
<application>标签的全局label。逐一检查Manifest中声明的Activity,尤其是常驻任务栈的首页、启动页,若单独配置了android:label属性且值错误,直接修改为正确名称,不需要单独配置label的Activity直接删除该属性,会自动继承application层级的配置。 - 排查代码动态设置标题逻辑:检查Activity(尤其是项目基类Activity)的生命周期逻辑,查找是否存在
setTitle()、setTitleCompat()相关调用,部分通用基类封装会默认读取R.string.app_name设置Activity标题,概览页会直接读取该title值展示,修改对应赋值逻辑即可。 - 修复SplashScreen兼容问题:如果项目引入了
androidx.core:core-splashscreen启动页依赖,1.0.0版本存在冷启动阶段自动将Activity标题重置为app_name的已知bug,可在SplashScreen初始化完成后主动调用setTitle()设置正确名称,或直接将依赖升级到1.0.1及以上版本修复。 - 定位资源合并冲突:若以上方案都未命中,可执行构建命令
./gradlew :app:assembleDebug(Windows环境去掉开头的./)打包后,查看app/build/intermediates/incremental/mergeDebugResources/merger.xml文件,搜索app_name字段即可看到该字符串的来源(多为第三方依赖库引入的冲突资源),通过resConfig排除冗余资源或覆盖对应值即可。
内容的提问来源于stack exchange,提问作者Hasan Şenkul
相关产品推荐
相关产品推荐

