You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询eCoding应用新版安卓上名称异常为FolioReader的成因与修复

应用名显示异常的核心原因

你遇到的新版设备上应用名变为FolioReader的问题,本质是系统解析逻辑和构建合并规则的版本差异导致的适配问题,和你项目本身的字符串配置没有直接关系:

  • 旧版Android系统(API 28及以下,即Android 9及更早版本)的桌面启动器,解析应用名时会优先读取启动Activity在<activity>标签下单独声明的android:label属性,只有Activity层没有定义label时,才会回溯读取Application层级的label值。哪怕你的项目在依赖引入时被FolioReader的库Manifest覆盖了Application层的label,因为启动Activity保留了你之前设置的"eCoding"名称,旧设备上的显示完全正常。
  • 新版Android系统(API 29及以上,即Android 10及更新版本)的启动器调整了应用名解析规则:如果启动Activity没有单独定义android:label,会直接将Application层级声明的label作为全局应用名展示在桌面。同时Android Gradle Plugin 4.0之后的版本收紧了Manifest合并逻辑:当主项目没有在Application节点显式声明android:label属性时,合并器会直接将FolioReader库Manifest中写死的android:label="FolioReader"值合并到主项目的最终Manifest文件中,全程不会弹出冲突告警,最终就导致新版设备上的应用名变成了第三方框架的名称。
对应修复方案
  • 第一优先级的快速修复:在主项目AndroidManifest.xml的<application>节点下,显式声明android:label="@string/app_name"。主项目Manifest中显式写死的属性优先级是最高的,会在合并阶段直接覆盖所有第三方库传入的同名字段,确保系统读到的应用名是你自定义的"eCoding"。
  • 资源层面的防覆盖加固:打开主项目res/values/strings.xml,确认app_name的字符串值为"eCoding"。如果遇到第三方库同名字符串覆盖主项目资源的问题,可以在模块级build.gradle的android配置块中添加强制资源声明:resValue "string", "app_name", "eCoding",该配置会在构建阶段直接把这个值写入最终的资源表,从根源上避免被依赖库的同名字段覆盖。
  • 合并逻辑的显式兜底:如果通过Android Studio的Merged Manifest视图排查,确认最终合并后的label值来源是FolioReader库,可以在主项目<application>节点添加合并工具属性tools:replace="android:label",显式告知Manifest合并器:当前节点的android:label属性需要替换所有依赖库传入的同属性值,彻底解决合并逻辑导致的属性覆盖问题。

内容的提问来源于stack exchange,提问作者areatech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.26 08:45:01