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
- 你当前使用的SyncFusion SfPdfViewer 16.1.0.32版本完全基于旧版Xamarin Android Support Library体系开发,内部UI组件加载逻辑依赖com.android.support:design库提供的
可落地解决方案
- 方案1:关闭AndroidX强制构建逻辑,匹配现有旧版依赖(改动量最小)
- 打开Xamarin.Android平台项目的.csproj配置文件,在属性节点中添加两项配置:
`<AndroidUseAndroidX>false</AndroidUseAndroidX>``<AndroidEnableJetifier>false</AndroidEnableJetifier>`
- 手动删除解决方案下所有项目的bin、obj缓存目录,重新执行全量编译,构建流程会保留原有Support Library资源的打包规则,从根源上避免资源ID重映射错位的问题,完全适配当前的旧版Xamarin.Forms和SyncFusion组件版本,不需要大幅升级依赖
- 打开Xamarin.Android平台项目的.csproj配置文件,在属性节点中添加两项配置:
- 方案2:手动补全缺失资源,保留AndroidX开关
- 在Xamarin.Android项目的
Resources/animator目录下新建design_appbar_state_list_animator.xml文件,写入对应状态列表动画的标准实现,将该文件的生成操作设置为AndroidResource - 编译前检查资源的命名空间配置,避免构建管线在打包时将该自定义资源覆盖移除
- 在Xamarin.Android项目的
- 方案3:完成全量依赖的AndroidX迁移,适配长期版本要求
- 将Xamarin.Forms升级至4.8.0.1825及以上内置AndroidX支持的版本
- 同步将SyncFusion SfPdfViewer升级至18.4.0.30及以上适配Xamarin.AndroidX的对应版本,新版构建管线会自动完成所有资源的映射匹配,从底层解决这类跨体系的资源兼容问题
内容的提问来源于stack exchange,提问作者bheadr92
相关产品推荐
相关产品推荐

