.NET MAUI应用集成Pendo SDK时双平台编译报错求助
基础说明
原Xamarin框架下可正常使用的pendo-sdk-ios、pendo-sdk-android NuGet包均为传统Xamarin平台专属绑定包,未做.NET MAUI适配,升级到MAUI后直接安装会触发平台编译错误。
iOS平台错误修复
错误根因
当前使用的2.16.0.5665版本pendo-sdk-ios编译目标为传统Xamarin.iOS运行时,所有基础类型(包括报错提到的NSObject)均依赖老式Xamarin.iOS程序集,和.NET MAUI使用的netX.0-ios运行时基础类库不兼容,手动强行添加Xamarin.iOS引用会引发更多类型冲突,完全无法解决问题。
操作步骤
- 卸载项目中已安装的旧版pendo-sdk-ios NuGet包
- 删除csproj文件中手动添加的Xamarin.iOS程序集引用配置
- 安装适配.NET for iOS/.NET MAUI的Pendo SDK绑定版本,注意避开标注为Xamarin专属的历史版本
- 原有初始化代码无需调整,
using Pendo;命名空间引入、PendoManager调用逻辑可直接保留,编译时的类型缺失错误会直接消除
若官方暂未发布适配MAUI的正式iOS NuGet包,可直接下载Pendo官方原生iOS Framework,通过MAUI绑定库项目自行生成适配当前.NET版本的绑定程序集,不要强行引用Xamarin时代的旧包。
Android平台错误修复
错误根因
当前使用的2.16.1.4053版本pendo-sdk-android依赖已废弃的Xamarin.Android.Support v28系列组件,该组件仅支持传统Xamarin.Android的MSBuild链路,依赖.NET Framework 4.0版本的Microsoft.Build.Utilities程序集,和.NET MAUI采用的AndroidX + .NET Core生成链路完全不兼容。
操作步骤
- 卸载项目中已安装的旧版pendo-sdk-android NuGet包
- 清理本地NuGet缓存中残留的Xamarin.Android.Support.Annotations等旧版Support库包,避免后续构建时被意外引用
- 安装基于AndroidX依赖编译、适配net6.0-android及以上版本的Pendo MAUI专属SDK包
- 若官方暂未发布适配MAUI的正式Android NuGet包,可直接下载Pendo官方原生Android AAR包,通过MAUI绑定库项目自行生成适配的绑定程序集,确保所有依赖替换为对应AndroidX包,禁止引入任何Xamarin.Android.Support开头的依赖项。
临时过渡方案
项目排期紧张时,可跳过官方NuGet包,直接在MAUI项目的平台目录中引入Pendo原生SDK文件,通过partial类实现跨平台调用接口,绕开旧版Xamarin专属NuGet包的兼容问题,实际运行效果和官方适配包无差异。
内容的提问来源于stack exchange,提问作者Rajarajan

