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

Flutter项目Google Play上线后Google Fonts字体不生效问题求助

Flutter Google Fonts Mali字体上线Google Play后失效的解决办法

本地正常、上线失效的核心原因通常是Google Play的资源优化剥离了字体文件,或者google_fonts的动态下载在上线环境被限制。试试下面的方案:

1. 关闭Google Play的资源自动剥离

Google Play的App Signing默认会移除它检测不到的"未使用资源",包括google_fonts缓存的字体文件:

  • 登录Google Play Console → 进入你的应用 → 「发布」→「应用签名」
  • 找到「优化APK大小」相关选项,关闭「移除未使用的资源」
  • 重新上传打包好的App Bundle

2. 改为本地嵌入字体(最稳妥)

彻底避免依赖网络下载,把Mali字体直接打包进应用:

  1. 下载Mali字体的全系列ttf文件(包含你用到的Regular、Bold等权重),放到项目的assets/fonts/目录
  2. 在pubspec.yaml中声明资源:
    flutter:
      assets:
        - assets/fonts/
    
  3. 在main函数里禁用google_fonts的运行时下载:
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      GoogleFonts.config.allowRuntimeFetching = false;
      // 其他初始化逻辑
      runApp(MyApp());
    }
    
    你的现有 TextStyle 和 ThemeData 代码不需要改动,库会自动匹配本地的字体文件。

3. 修复ProGuard/R8混淆问题

如果开启了代码混淆,可能破坏google_fonts的字体加载逻辑。在android/app/proguard-rules.pro中添加规则:

-keep class com.google.fonts.** { *; }
-keep class androidx.core.graphics.** { *; }

然后重新执行flutter build appbundle上传。

4. 确认字体文件完整性

检查你打包的Mali字体是否包含所有用到的权重,比如你用了FontWeight.bold,就要确保Mali-Bold.ttf存在于assets/fonts/目录,且pubspec.yaml正确配置,否则会 fallback 到系统默认字体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:25:29