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

