当前位置: 首页 > 知识库问答 >
问题:

调用设备运行时平台导致运行时异常

斜淳
2023-03-14

我在所有项目(平台共享)中将我的Xamarin. form包更新到最新(2.3.4.224),现在我似乎不应该再使用Device.OSTarget平台枚举,因为它们已被弃用。

编译器因为这些行而抱怨:

if (Device.OS == TargetPlatform.iOS) 
    _API_BASE_URI = "http://XXX.XXX.XXX.XXX"; 
else
    _API_BASE_URI = "http://YYY.YYY.YYY.YYY"; 

上面写着:

"Device.OS已过时。请改用Runtime平台"

到目前为止一切都很好,现在我想解决这个问题,我一直在尝试使用:

Debug.WriteLine(Device.RuntimePlatform);

但它抛出了一个运行时异常。这是堆栈跟踪

04-08 14:57:34.812 I/MonoDroid( 3782):未处理的异常:04-08 14:57:34.824 I/MonoDroid( 3782):System.TypeInitializationException:“Mob.ApiCommunication”的类型初始值设定项引发异常。---

我在使用运行时平台时遗漏了什么吗?我已经环顾四周,但目前有关 Device 类的任何文档/示例都在使用已弃用的成员。

共有3个答案

赏成益
2023-03-14

hvaughan3 对 OP 的评论对我有什么影响。确保不仅您的 PCL,而且您的 Android/iOS/etc 项目也更新了它们的软件包。然后按照OP接受的答案进行全面清理并从那里构建。

高寒
2023-03-14

Xamarin.Forms-2.3.4.224已将条件检查更改为:

if (Device.OS == TargetPlatform.iOS) 
{

}

收件人:

if (Device.RuntimePlatform.Equals("Android"))
{
    Debug.WriteLine($"Onplatform: {Device.RuntimePlatform}");
}
else if (Device.RuntimePlatform.Equals("iOS"))
{
    Debug.WriteLine($"Onplatform: {Device.RuntimePlatform}");
}
归俊杰
2023-03-14

我想出了一个解决方案。奇怪的是,在发布到SO之前,我已经为我的Xamlin项目做了这件事,但没有任何效果。但是这一次,在Xamlin论坛上阅读了这篇帖子后:https://forums.xamarin.com/discussion/92455/xamarin-forms-2-3-4-224这就是我所做的:

我已经关闭了VisualStudio,清理了所有“垃圾箱”

现在<代码>调试。WriteLine(设备。runtime platform);按预期返回“Android”字符串!,

 类似资料:
  • 我已经在 Android 4.3 低功耗蓝牙示例中实现了代码来查找设备。 我的舱单包括: 并且该设备是Nexus 4,已使用出厂4.3映像进行切换。 我曾经让这个东西工作过一次,但在后续运行中,我得到以下错误:

  • 我正在使用以下联系人获取应用程序的代码,我正在获得Android运行时:致命的异常:第17行的主要错误。 下面是我的logcat E/AndroidRuntime:致命异常:主进程:com.example.alpesh_pc.contactList,PID:3833 java.lang.RuntimeException:无法启动activity组件信息{com.example.alpesh_pc.

  • 问题内容: 尝试使用gdb调试程序时,它无法在OPENSSL_cpuid_setup中报告SIGILL。 有了这个简单的代码,我的行为与: 它可以编译并运行良好,但是从回溯之后的gdb报告开始 如何在gdb下运行这样的程序? 问题答案: SSL_library_init在gdb下运行时会导致SIGILL … 实际上,它一直都在执行,而不仅仅是在GDB下。当库测试处理器功能时,这是启动代码中的正常行

  • 我有一个在Tomcat7上运行的Spring3.0WebMVC应用程序。在应用程序启动时,我启动一个后台线程来加载内存缓存,其中包含来自数据库的记录。该线程从数据库加载所有数据通常需要一个多小时。在同一个应用程序中,我有一个@Controller注释类,它公开了一个REST接口,客户端可以通过该接口从加载的缓存中获取对象。 我们的要求之一是,在数据加载完成之前发出的任何REST请求都将立即向客户端

  • (2016.3.15更新) 上周我遇到了一个奇怪的问题,我想和你讨论一下这个问题。 但是,如果我使用sendMessage(SearchHandler.Object...)而不是runOnUiThread,一切都会很顺利!! java: SearchActivity.java: 2)在运行getActivity().runonuithread()之前,首先判断getActivity()==null

  • 在各方有志之士的努力下,Ruby已经被移植到多种平台。下面,就从OS或开发环境等方面对Ruby的运行环境做一个简要介绍。 关于安装和编译问题,请参考Ruby 安装指南。 Unix Windows(Win32) Win32 native版 mswin32 MinGW (mingw, mingw32) bccwin32 Cygwin (cygwin) Mac Mac OS X BeOS MS-DOS