You need to enable JavaScript to run this app. Xamarin.Forms切换Android 10后SyncFusion SfPdfViewer打开PDF崩溃求助
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms切换Android 10后SyncFusion SfPdfViewer打开PDF崩溃求助

崩溃成因
  • 该报错为资源ID映射失效类运行时崩溃,核心触发链条来自编译配置切换后的依赖版本错配:
    • 你当前使用的SyncFusion SfPdfViewer 16.1.0.32版本完全基于旧版Xamarin Android Support Library体系开发,内部UI组件加载逻辑依赖com.android.support:design库提供的animator/design_appbar_state_list_animator动画资源
    • 切换到Android 10编译配置后,Xamarin.Android构建管线会默认启用AndroidX适配逻辑,原Support Library体系下的资源会被自动重映射ID
    • 叠加你使用的Xamarin.Forms 2.5.1.444934属于Support Library时代的旧版本,没有内置AndroidX兼容补丁,当PDF查看器初始化时触发AppBar组件加载逻辑,会直接读取未正确重映射的旧资源ID,最终抛出Android.Content.Res.Resources+NotFoundException
可落地解决方案
  • 方案1:关闭AndroidX强制构建逻辑,匹配现有旧版依赖(改动量最小)
    • 打开Xamarin.Android平台项目的.csproj配置文件,在属性节点中添加两项配置:
      • `<AndroidUseAndroidX>false</AndroidUseAndroidX>`
      • `<AndroidEnableJetifier>false</AndroidEnableJetifier>`
    • 手动删除解决方案下所有项目的bin、obj缓存目录,重新执行全量编译,构建流程会保留原有Support Library资源的打包规则,从根源上避免资源ID重映射错位的问题,完全适配当前的旧版Xamarin.Forms和SyncFusion组件版本,不需要大幅升级依赖
  • 方案2:手动补全缺失资源,保留AndroidX开关
    • 在Xamarin.Android项目的Resources/animator目录下新建design_appbar_state_list_animator.xml文件,写入对应状态列表动画的标准实现,将该文件的生成操作设置为AndroidResource
    • 编译前检查资源的命名空间配置,避免构建管线在打包时将该自定义资源覆盖移除
  • 方案3:完成全量依赖的AndroidX迁移,适配长期版本要求
    • 将Xamarin.Forms升级至4.8.0.1825及以上内置AndroidX支持的版本
    • 同步将SyncFusion SfPdfViewer升级至18.4.0.30及以上适配Xamarin.AndroidX的对应版本,新版构建管线会自动完成所有资源的映射匹配,从底层解决这类跨体系的资源兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 12:45:07