Xamarin.forms: [Bug]自更新为Xamarin Forms v4以来,Android应用程序崩溃

创建于 2019-09-20  ·  56评论  ·  资料来源: xamarin/Xamarin.Forms

自从更新到4.2.0.815419以来,我现在在LoadApplication(new App(dbPath,builder));处引发以下异常。 在MainActivity.cs中

我也尝试过v4.3.0.819712-pre2,以防其中包含修复程序。

我将必须回滚到3.5.0.129452,但我认为记录该问题将很有用。

链接设置为“无”。 UWP应用程序确实可以工作。

09-25 13:17:14.076 E/mono    ( 5126): 
09-25 13:17:14.076 E/mono    ( 5126): Unhandled Exception:
09-25 13:17:14.076 E/mono    ( 5126): System.TypeLoadException: Could not load type of field 'Xamarin.Forms.Platform.Android.RendererPool:_freeRenderers' (0) due to: Could not resolve type with token 01000275 from typeref (expected class 'System.Collections.Generic.Stack`1' in assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e') assembly:mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e type:System.Collections.Generic.Stack`1 member:(null)
09-25 13:17:14.076 E/mono    ( 5126):   at (wrapper dynamic-method) System.Object.7(intptr,intptr,intptr)
09-25 13:17:14.076 E/mono    ( 5126):   at (wrapper native-to-managed) System.Object.7(intptr,intptr,intptr)
09-25 13:17:14.076 E/mono-rt ( 5126): [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type of field 'Xamarin.Forms.Platform.Android.RendererPool:_freeRenderers' (0) due to: Could not resolve type with token 01000275 from typeref (expected class 'System.Collections.Generic.Stack`1' in assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e') assembly:mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e type:System.Collections.Generic.Stack`1 member:(null)
09-25 13:17:14.076 E/mono-rt ( 5126):   at (wrapper dynamic-method) System.Object.7(intptr,intptr,intptr)
09-25 13:17:14.076 E/mono-rt ( 5126):   at (wrapper native-to-managed) System.Object.7(intptr,intptr,intptr)
high regression Android bug

最有用的评论

我发现System.Collections.Generic.Queue在

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ System.dll

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ mscorlib.dll

在以下位置不可用

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ mscorlib.dll

因此,如果依赖于Queue的任何dll与VS2019兼容并在VS2017上运行,它将引发无法从mscorlib加载Queue的异常。
我认为不仅Queue,而且Collections.Generic名称空间中的其他类也可能遇到相同的问题。

所有56条评论

乍一看,这似乎是某种缓存问题。 确保将所有项目更新为相同版本的Xamarin.Forms,然后清理解决方案。 为了确保从文件中的每个项目中删除bin和obj文件夹。 还要从模拟器或设备中删除该应用程序。

进行重建,运行,并希望所有问题都得到解决。 您已经尝试过这些方法吗?

我发现我必须卸载电话上所有现有的3.0应用程序,然后重新部署干净并构建您的解决方案,然后就可以了。 可能是我几次热重装,所以请确保已禁用此功能。

@jfversluis,您好,这些问题实际上也发生在devops和appcenter上,我认为这两个区域在进行任何构建之前都会清理工作区

搜索此错误消息似乎与Android定位和支持包有关。 您也更新了吗? 您能否提供更多有关要安装的软件包以及要安装的版本和Android版本的更多信息?

是的,我将我的API级别更新为Andriod 9

在2019年9月20日星期五,3:46 PM Gerald Versluis [email protected]
写道:

搜索此错误消息似乎与Google有关
定位和支持包。 您也更新了吗? 您可以...吗
提供有关哪些软件包与哪些软件包完全安装的更多信息
版本以及您要定位的Android版本?

-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub上查看
https://github.com/xamarin/Xamarin.Forms/issues/7602?
或使线程静音
https://github.com/notifications/unsubscribe-auth/ABK34HLYSFLSUXVEIB5H67LQKTO3PANCNFSM4IYVWRJA

-

问候
大卫·巴克利
手机:07871 884 546

更新到最新版本后,我遇到了同样的问题,在以前的版本中,一切正常,但是当我更新xamarin时,发生了错误。

遇到此问题的任何人都可以附上一个演示此问题的小项目吗? 谢谢!

我在SO上看到有人遇到相同的问题: https

似乎与地图有关? 有人可以验证吗? 萨曼莎(Samantha)说的话,复制品真是太棒了!

我在Android和iOS中都有完全相同的问题。 在Android上,该应用程序会生成,并在iOS上启动时崩溃,但该应用程序无法生成(当定位真正的设备模拟器时,效果很好)。 我得到上面与System.Collections.Generic.Stack`1相关的Stack溢出链接中引用的错误

如果我恢复到4.2.0.778463,则不存在该问题

我不确定它是否与地图有关,但是我的应用程序确实包含了Maps nuget包。

我不使用地图,即使在新项目中也是如此

@KennyMack您可以将其放入复制项目中并在此处添加吗?

我在升级到4.2 SR2时遇到了同样的错误。
我尝试了一些建议,更新了所有nuget-packages,但应用程序仍然崩溃。
我启动了一个新的空白应用程序(在4.0中),效果很好!
升级到tot 4.2 SR2,崩溃了!
然后我更新了Visual Studio (16.2.5),问题消失了!

@KennyMack您可以将其放入复制项目中并在此处添加吗?

我只是创建了一个新的空应用程序,并且在VS2017 15.9中也得到了TypeLoadException(但没有任何详细信息)

image

然后我更新了Visual Studio (16.2.5),问题消失了!

使用VS2019,我还可以编译和运行该应用程序而不会出现任何问题。

@jfversluis VS2017为什么会失败的任何想法? 这是VS2017 15.9的Mono问题吗?

@jfversluis在这里,我只是创建xamarin并将其更新到版本4.2.0.815419,并且启动时应用崩溃
https://github.com/KennyMack/ExampleFail

我在使用AppCenter时遇到了相同的问题,同时使用4.2.0.815419的iOS和Android版本均失败,并出现了相同的“预期类'System.Collections.Generic.Stack”消息。

我在AppCenter中将构建配置更改为使用:SDK版本:Xamarin.iOS 12.14和Xcode版本:10.3。
自从在iOS版本上更改这些设置以来,问题似乎已经消失了(尚未尝试Android)。

@KennyMack我取消了您的复制权,对我来说一切正常

image

@KennyMack我取消了您的复制权,对我来说一切正常

您使用哪个VS? 该问题仅发生在2017年而不是2019年

@KennyMack我取消了您的复制权,对我来说一切正常

image

这很奇怪,在我的版本中不起作用。
我正在使用Visual Studio 2017版本15.9.16。
我是否需要更新其他内容?

我的错

它确实在VS 2017上崩溃了:-/

我们只是将构建管道移至开始使用VS 2019的位置,所以我在内部四处看看上述异常

我遇到的问题与@ dannythomas13所说的一样。 最初,我的xamarin表单版本为3.4.0.1008975,当我将其更新为4.2.0.815419时,应用程序崩溃并显示相同的问题。 即使我尝试在空白项目中,它也会崩溃,并给出相同的错误。 我的vs是vs企业2017版本15.9.13。

我和@ dannythomas13@zimbabirbal说的一样。 您可以修复它,使其也可以与VS2017一起使用?

我发现System.Collections.Generic.Queue在

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ System.dll

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ mscorlib.dll

在以下位置不可用

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ mscorlib.dll

因此,如果依赖于Queue的任何dll与VS2019兼容并在VS2017上运行,它将引发无法从mscorlib加载Queue的异常。
我认为不仅Queue,而且Collections.Generic名称空间中的其他类也可能遇到相同的问题。

在VS2017上构建的iOS存在相同的问题。 参见#7638。

在VS 16.0.3上发生了相同的错误,已升级到最新(16.3.1),问题已解决。 #魔法

因此,如果依赖于Queue的任何dll与VS2019兼容并在VS2017上运行,它将引发无法从mscorlib加载Queue的异常。
我认为不仅Queue,而且Collections.Generic名称空间中的其他类也可能遇到相同的问题。

这是Xamarin.Android团队应该关注的@jonathanpeppers @brendanzagaeski

之所以开始发生这种情况是因为我们将构建服务器从VS 2017迁移到了具有较新版本XA / XI / Mono SDK的VS 2019。 当您针对这些SDK的较新版本进行构建时,这些版本将不再适用于较旧版本。

这是触发此异常的特定更改https://github.com/mono/mono/pull/11511

下一版本的4.2将针对VS 2017构建,因此仍可以在VS 2017上使用,但4.3至少需要16.3。

原因是4.3的要求实际上与要求Visual Studio 16和/或16.3使用最新SDK的每个平台有关

XCode11需要16.3
Android 10要求16.3,Android X至少要求16.2
WinUI至少需要VS 2019才能使用最兼容的SDK

到目前为止,我们确实并不需要针对较新的SDK进行构建,但是现在我们必须这样做才能支持较新的框架

下一版本的4.2将针对VS 2017构建,因此仍可以在VS 2017上使用,但4.3至少需要16.3。

好的,所以我们将停止使用Xamarin.Forms。 VS2019是不可行的。 再见再见,RIP Xamarin。

@ MagicAndre1981我们仍在讨论选项。 我们尚未决定是否需要VS2019 4.3。

您是否愿意分享为什么VS2019是“不行”的原因? 您的升级时间表是什么?

谢谢!

您是否愿意分享为什么VS2019是“不行”的原因?

由于损坏的UI(可怕的模态“开始”窗口,这破坏了“新建项目”对话框,而通知栏上的通知图标却始终被我忽略了)。 VS2019重复了VS2012灾难

iOS上也发生崩溃。 这也是由旧版VS for Mac引起的吗? 因为对我来说,这在Azure DevOps上失败了,我选择了macOS X Mojave 10.14作为生成的代理。

其次,此问题正在影响使用macOS 10.14的DevOps上的构建管道。 是否有任何短期解决方案,还是我们一直在等待新的4.2.X版本?

嗨,您好,
我们需要一些帮助和建议。

我需要升级到4.2.0.815419,该版本解决了图像uri在早期版本中不起作用的问题。
我今天要交付给客户,但不能。
我想避免恢复到4的旧版本。

但是整天试图使ios构建为针对4.2.0.815419
“无法解决“ System.Collections.Generic.Stack`1”。尝试了各种各样的事情……并得到了我在这里没有提及的其他错误,因为这可能会使事情变得混乱。

4.2.0.815419确实发生了某些变化,我们无法再在iOS的Azure管道上构建。

我最后的工作版本是将Mono 5_16与4.1.0.709244一起使用

有什么建议 ?

我遇到了同样的问题。
我安装了Xamarin Essentials,并且nuget要求将Xamarin升级到版本4.2.0.815419。
我回到4.2.0.778463版本,然后又恢复正常工作

我看到了同样的问题,因为@ developer9969并与@oliveiraugusto 4.2.0.848062版本。

MTOUCH:错误MT2002:无法解析“ mscorlib,版本= 2.0.5.0,区域性=中性,PublicKeyToken = 7cec85d7bea7798e”中的“ System.Collections.Generic.Stack`1”引用

我正在使用以下脚本运行iOS构建,并指定MONO SDK版本和Xcode

/ bin / bash -c“ sudo $ AGENT_HOMEDIRECTORY / scripts / select-xamarin-sdk.sh 5_18_1”
/ bin / bash -c“ sudo xcode-select -s /Applications/Xcode_10.2.1.app/Contents/Developer”

任何解决方法?

HI队
我也遇到了同样的问题,是否可以期望在VS 2017上使用xamarin表单进行修复?

@ryanmendoza要修复iOS devops构建,您需要使用xCode 11和Xamarin sdk 6_4_0。 使用版本3.0.100将构建任务“使用.NET Core”添加到管道中。

@ryanmendoza

其次,此问题正在影响使用macOS 10.14的DevOps上的构建管道。 是否有任何短期解决方案,还是我们一直在等待新的4.2.X版本?

现在实际上有一个新版本,是否可以为您解决问题?

这应该在NuGet上发布的最新版本的Xamarin.Forms中解决。 谢谢!

这应该在NuGet上发布的最新版本的Xamarin.Forms中解决。

哪个版本/内部版本号? XF为VS2017用户使用多长时间?

4.2.0.848062和4.3.0.851321-pre3都与VS2017兼容。

我可以确认使用最新版本(上述)可以解决所报告的问题,而无需升级/更改现有工具。

4.2.0.848062 ...与VS2017兼容。

谢谢,我可以确认这一点。

使新版本的Xamarin.Forms与旧工具一起使用是没有意义的。 想要使用旧工具的人仍然可以使用Xamarin.Forms的旧版本。 需要支持旧工具将在回购中拖累开发,而该回购已经拖累了开发工作。

我在MacOS Mojave的Xamarin.Forms.iOS版本4.3.0.991211上遇到了相同的问题

@samhouts该问题已解决,但问题仍然存在...官方解决方案在哪里,或者至少给我们提供解决此问题的解决方法?

查看Azure DevOps中的生成日志:
image

_项目类型-Xamarin.iOS
单声道-5.12.0
XCode-10.2.1_

在Azure DevOps中的

@beylkhanovdamir您正在使用什么版本的Xamarin.Forms? 在前面提到的版本之后,这种情况不应再发生

@jfversluis我也仍然会发生这种情况(Xamarin.Forms.iOS版本4.3.0.991211

@ Sonic3R您在Windows上使用VS2017吗? VSMac? 您能否提供更多详细信息?

Visual Studio for Mac,版本8.3

@jfversluis,您可以在DevOps中查看我的.yaml配置

ps我在下面使用'_macOS-latest_'vmImage和XF版本
image

@beylkhanovdamir您是否看到此评论: https :

我看到您正在手动设置SDK版本,并且您正在使用Xcode 10,因此您可能想研究将当前版本与最新的Forms版本一起使用。

@ Sonic3R您能否分享更多有关在构建时在VSMac中看到的错误的信息? 您正在使用哪个版本的Xcode?

伙计们,我发现它的热重装功能已启用r禁用了热重装功能,
应用程序会很好。

在2019年12月3日星期二12:47下午Gerald Versluis [email protected]
写道:

@beylkhanovdamir https://github.com/beylkhanovdamir你看到这个了吗
评论:#7602(评论)
https://github.com/xamarin/Xamarin.Forms/issues/7602#issuecomment-537847507

我看到您正在手动设置SDK版本,并且您正在使用Xcode 10,
您可能要考虑使用最新版本和最新版本
表格版本。

@ Sonic3R https://github.com/Sonic3R能再分享一点吗
在构建时在VSMac中看到什么错误?

-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub上查看
https://github.com/xamarin/Xamarin.Forms/issues/7602?
或退订
https://github.com/notifications/unsubscribe-auth/ABK34HM2BQTF5PHNEBQVEFDQWZIPTANCNFSM4IYVWRJA

-

问候
大卫·巴克利
手机:07871 884 546

@jfversluis

您是否看到此评论:#7602(评论)

是的,我看到了,但是我不能,因为我们有一个项目,目标FW是.netstandard 2.0(即不兼容2.1与.net core 3.0兼容),在这种情况下,我会遇到很多编译错误。
但也许到目前为止,这确实是解决此问题的最后方法

嗨-在Visual Studio 2017上获取以下错误消息支持Xamarin.iOS 12.4.0.64。 有人请协助我们解决此问题,因为它现在阻止了我们完整的部署过程。

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Xamarin \ iOS \ Xamarin.iOS.Common.targets(795,3):错误MT2002:无法解析“ System.Collections.Generic.Stack来自“ mscorlib,版本= 2.0.5.0,文化=中性,PublicKeyToken = 7cec85d7bea7798e”的“ 1”参考

仅在与具有相同Xamarin.iOS,最新xCode和mono 5.18的mac配对后,才会出现此错误消息

提前致谢

@ryanmendoza要修复iOS devops构建,您需要使用xCode 11和Xamarin sdk 6_4_0。 使用版本3.0.100将构建任务“使用.NET Core”添加到管道中。

这到底是什么意思? 我对此很困惑,您是否可以分享示例YAML?

我用.netcore任务构建什么? iOS项目..如何? 我显然错过了一些东西。

此页面是否有帮助?
0 / 5 - 0 等级