升级Visual Studio后TestFlight安装的Xamarin Forms iOS应用字体丢失
问题根因
这是Visual Studio 2019 v16.11.6版本内置的Xamarin.iOS打包工具的已知缺陷:Release模式下执行归档构建时,会遗漏部分标记为BundleResource的自定义字体资源,不会自动将其纳入最终的ipa包资源目录。调试部署、模拟器运行时使用的是Debug构建逻辑,不会触发该缺陷,因此只有TestFlight/App Store分发的归档包会出现字体丢失问题。
修复步骤
- 首先确认所有自定义字体的属性配置正确:右键点击iOS项目中的每个字体文件,选择「属性」,生成操作设置为
BundleResource,复制到输出目录设置为如果较新则复制。 - 手动校验Info.plist配置:打开iOS项目的Info.plist文件,找到「应用程序字体」(
UIAppFonts)数组,确保所有自定义字体的完整文件名(包含后缀、大小写和实际文件完全一致,iOS文件系统大小写敏感)都已经添加到该数组中。 - 增加强制打包配置:如果上述配置已经正确但问题依旧,在iOS项目的
.csproj文件的<Project>根节点下添加以下构建逻辑,强制Release模式下将字体资源纳入打包范围:
<Target Name="ForceIncludeCustomFonts" BeforeTargets="CollectBundleResources" Condition="'$(Configuration)'=='Release'"> <ItemGroup> <!-- 下面的路径替换为你项目中存放自定义字体的实际相对路径 --> <BundleResource Include="Fonts\*.ttf;Fonts\*.otf" /> </ItemGroup> </Target>
- 版本升降级方案:你也可以直接将Visual Studio降级到v16.11.5版本,或者升级到v16.11.7及以上版本,微软已经在后续更新中修复了该打包缺陷。
验证方法
修改完成后先清理整个解决方案的缓存,再执行归档构建,导出Ad Hoc版本的安装包直接安装到测试设备验证,无需上传TestFlight即可确认修复效果。
内容的提问来源于stack exchange,提问作者user3071319
相关产品推荐
相关产品推荐

