Xamarin的可移植类库在iOS模拟器上工作,但不能在设备上工作
本文关键字:工作 但不能 模拟器 可移植 类库 iOS Xamarin | 更新日期: 2023-09-27 18:05:43
我们有一个Xamarin跨平台应用程序,它使用自定义的可移植类库与我们公司的API接口。我们遇到的问题是,当我们在iOS模拟器上使用应用程序通过PCL发出请求时,一切都像预期的那样工作,但当我们试图在实际设备上做同样的事情时,我们会从API返回"Bad request"错误代码。
我们已经能够确定当应用程序在设备上运行时,我们正在制作的post中的body参数为null,但是当我们在模拟器上做同样的事情时,参数具有我们传入的值。
我们的PCL正在使用System.Net。所以我们认为这个答案可能会有所帮助:HttpClient失败遗憾的是,这不起作用,因为Xamarin应用程序似乎不使用app.config文件。
我们已经尝试检查以确保我们的PCL和我们的iOS项目都引用了同一个版本的System.Net。HttpClient,但这似乎也没有解决问题。
我们还尝试了以下bug报告中的解决方案,但没有效果:https://bugzilla.xamarin.com/show_bug.cgi?id=20589
这篇文章在过去曾帮助过我们,但现在似乎不起作用了:在Xamarin中创建PCL时,.Net可移植子集缺少HttpClient
当应用程序在模拟器和设备上运行时,有几个差异。
其中之一是在模拟器构建时禁用托管链接器(使用JIT时更快),而在设备构建时启用托管链接器(相同的逻辑:对于AOT构建更快)。
有可能你的应用程序使用反射(直接或间接)并且需要保留一些成员(例如序列化)。
您可以通过在模拟器构建上启用托管链接器(或在设备构建上禁用它)来尝试这一点。这将告诉您您的问题是否与托管链接器有关。