我的xamarin android应用程序,运行正常,每次启动都会因此异常而崩溃。
该应用程序是从appcenter的构建服务构建的,就像它一直有的一样。如果我在Debug或Release模式下在本地构建它,它会正常启动。使用Android 7设备。
有没有人遇到这个例外,知道该怎么做? Ty!
18828 W monodroid: Calling into managed runtime init
E mono :
E mono : Unhandled Exception:
E mono : System.TypeInitializationException: The type initializer for 'Android.Runtime.UncaughtExceptionHandler' threw an exception. ---> System.ArgumentNullException: Value cannot be null.
E mono : Parameter name: method
E mono : at System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method, System.Boolean throwOnBindFailure, System.Boolean allowClosed) <0x56d026b4 + 0x00d74> in :0
E mono : at System.Delegate.CreateDelegate (System.Type type, System.Reflection.MethodInfo method) <0x56d03594 + 0x0001f> in :0
: at Android.Runtime.UncaughtExceptionHandler..cctor () <0x57d908a4 + 0x0003f> in :0
: --- End of inner exception stack trace ---
: at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_generic_class_init (intptr)
: at Android.Runtime.JNIEnv.Initialize (Android.Runtime.JnienvInitializeArgs* args)
- 编辑
启用所有AOT / LVVM /并发垃圾收集器/ proguard / multidex选项
- 编辑2
static UncaughtExceptionHandler ()
{
var mono_UnhandledException = typeof (System.Diagnostics.Debugger)
.GetMethod ("Mono_UnhandledException", BindingFlags.NonPublic | BindingFlags.Static);
mono_unhandled_exception = (Action<Exception>) Delegate.CreateDelegate (typeof(Action<Exception>), mono_UnhandledException);
var ad_due = typeof (AppDomain)
.GetMethod ("DoUnhandledException",
bindingAttr: BindingFlags.NonPublic | BindingFlags.Instance,
binder: null,
types: new []{typeof (UnhandledExceptionEventArgs)},
modifiers: null);
if (ad_due != null) {
AppDomain_DoUnhandledException = (Action<AppDomain, UnhandledExceptionEventArgs>) Delegate.CreateDelegate (
typeof (Action<AppDomain, UnhandledExceptionEventArgs>), ad_due);
}
}
因此,似乎mono_UnhandledException为null或AppDomain_DoUnhandledException为null。
将尝试在appcenter中升级或降级单声道版本。这应该是错的。
- 编辑3
AppDomain.cs最近在单声道中发生了变化:
但是DoUnhandledException没有改变。
- 编辑4
在本地构建/发布时工作正常。所以问题是appcenter特有的。
答案 0 :(得分:1)
在我的情况下,问题是由于使用App Center尚不支持的Android SDK 8.1引起的。 我不得不降级到SDK 8.0,现在构建工作正常。
App Center团队承诺会增加对SDK 8.1的支持,但他们还没有ETA。
答案 1 :(得分:1)
AppCenter最近发布了与Xamarin.Android 8.2捆绑的Mono 5.8(支持TargetFrameworkVersion:8.1),为了使用它,请更改您的分支配置 - &gt;保存并。构建
另外filed the issue由Xamarin.Android团队进行调查。
答案 2 :(得分:0)
我们遇到了与jenkins和msbuild相同的问题。作为目标回滚到8.0并禁用“使用最新”工作。在本地,使用'使用最新',构建工具26.0.3和macos app上的msbuild就像一个魅力。不确定jenkins上安装的构建工具。
答案 3 :(得分:0)
我在App Center中遇到了同样的问题。我的Android应用程序设置为目标Android 8.1(最新)并在App Center中构建正常,但在运行&#34;启动测试&#34;它失败。
应用程序在调试和发布模式下本地运行良好。
我尝试停用启动测试,以便将应用分发给我的协作者。当我的任何合作者下载应用程序并使用它时,该应用程序无法正常工作。
我使用VSTS构建它并通过App Center分发给我的协作者,他们说应用程序正在运行,因此我可以认为它是App Center构建问题。
我没有尝试使用Android 8.0构建我的应用程序,因为有些nuget软件包仅适用于Android 8.1,我没有时间降级它们。