我使用 MvvmCross 星球大战示例(https://github.com/MvvmCross/MvvmCross-Samples/tree/master/StarWarsSample)作为一个项目开始,根据我的一些需求进行调整并尝试部署它在谷歌 Pixel 4 上。
我只有核心和 droid 项目,没有 iOS。
在调试模式下启动应用程序工作正常。
LogCat 堆栈跟踪:
06-09 21:33:24.491:I/MonoDroid(24322):未处理的异常: 06-09 21:33:24.495:I / MonoDroid(24322):System.ArgumentNullException:MvxWeakEventSubscription 中缺少源事件信息 06-09 21:33:24.495:I / MonoDroid(24322):参数名称:sourceEventInfo 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.WeakSubscription.MvxWeakEventSubscription
1 [TEventArgs] targetEventHandler)[0x0001d]中:0 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.WeakSubscription.MvxWeakEventSubscription2[TSource,TEventArgs]..ctor (Android.Views.View source, System.Reflection.EventInfo sourceEventInfo, System.EventHandler
1 [TEventArgs] targetEventHandler)[0x00012]中:0 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.Platforms.Android.WeakSubscription.MvxAndroidTargetEventSubscription2[TSource,TEventArgs]..ctor (Android.Views.View source, System.String sourceEventName, System.EventHandler
1[TEventArgs] targetEventHandler)[0x00000]中:0 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.Platforms.Android.WeakSubscription.MvxAndroidWeakSubscriptionExtensions.WeakSubscribe [TSource,TEventArgs](TSource源,System.String eventName,System.EventHandler`1 [TEventArgs]事件处理程序)[0x00000] 在:0 06-09 21:33:24.495:I / MonoDroid(24322):在MvvmCross.Droid.Support.V7.RecyclerView.MvxRecyclerViewHolder.OnAttachedToWindow()[0x00074]在<6dcdb499fdcb47abb57d7957137b06a2>:0 06-09 21:33:24.496:I / MonoDroid(24322):在MvvmCross.Droid.Support.V7.RecyclerView.MvxRecyclerAdapter.OnViewAttachedToWindow(Java.Lang.Object持有者)[0x0000e]在<6dcdb499fdcb47abb57d7957137b06a2>:0 06-09 21:33:24.496:I / MonoDroid(24322):在AndroidX.RecyclerView.Widget.RecyclerView + Adapter.n_OnViewAttachedToWindow_Landroidx_recyclerview_widget_RecyclerView_ViewHolder_(System.IntPtr jnienv,System.IntPtr native__this,System.IntPtr native_holder)[0x0000 f] 于:0 06-09 21:33:24.496:I / MonoDroid(24322):在(包装动态方法)Android.Runtime.DynamicMethodNameCounter.55(intptr,intptr,intptr)2[TSource,TEventArgs]..ctor (Android.Views.View source, System.String sourceEventName, System.EventHandler
(2020年6月10日)编辑1: 将标题从“无法找到 MvvmCross.Core.MvxSettings 类型的构造函数#”更改为“在发布配置上部署会导致异常“无法找到 MvvmCross.Core.MvxSettings 类型的构造函数”'
(2020年6月10日)编辑2: 将以下代码片段插入 LinkerPleaseIninclude.cs
public void Include(MvxSettings mvxSettings)
{
mvxSettings = new MvxSettings();
}
public void Include(MvxStringToTypeParser mvxStringToTypeParser)
{
mvxStringToTypeParser = new MvxStringToTypeParser();
}
现在在 MyApp.Droid.Setup.CreateApp() 之后但在 MyApp.Core.App 初始化之前或之中似乎出现错误。
由于其中没有异步方法,似乎此时冻结还有另一个原因。
就像评论中讨论的那样,这是一个修剪问题。 我们已从 .NET 6 升级到 .NET 8,并在 .NET 7/8 中删除了使用的修剪模式。
在 android.csproj 中将 copyused 替换为 partial 对我们有用。
<TrimMode>partial</TrimMode>