如何从Flutter项目中移除未使用的默认字体以减小包体积?
Flutter移除默认字体以减小包体积
是的,默认情况下,即使你仅使用自定义字体或Google Fonts,Flutter构建产物仍会包含Roboto(Android端)、SF(iOS端)这类系统默认字体——这是Flutter为保证跨平台文本渲染一致性的默认行为,但你可以通过配置移除它们来缩减包体积。
移除默认字体的具体方法
Android平台
在android/app/build.gradle的flutter配置块中添加排除规则,剔除默认的Roboto字体:
flutter { source '../..' exclude '**/Roboto*.ttf' }
iOS平台
- 确保
pubspec.yaml中仅声明你需要的自定义字体/Google Fonts,不要包含默认字体; - 打开
ios/Runner/Info.plist,在UIAppFonts数组里只添加你实际使用的字体文件,Flutter将不再打包默认的SF字体。
Flutter全局主题配置
为避免Material组件默认 fallback 到系统字体,需要全局设置主题字体,确保所有文本都使用你指定的字体:
MaterialApp( theme: ThemeData( // 使用自定义字体 fontFamily: 'YourCustomFont', // 或使用Google Fonts textTheme: GoogleFonts.openSansTextTheme(), ), home: const HomePage(), )
验证效果
构建完成后,你可以检查产物内容:
- Android端查看APK解压后的
assets/fonts目录,确认无Roboto相关文件; - iOS端查看IPA包内的字体资源,确认无SF相关字体。
内容的提问来源于stack exchange,提问作者Levent KANTAROGLU
相关产品推荐
相关产品推荐

