在调试模式下运行的同一Android应用程序在发布模式下崩溃

少年意气强不羁,虎胁插翼白日飞。这篇文章主要讲述在调试模式下运行的同一Android应用程序在发布模式下崩溃相关的知识,希望能为你提供帮助。
我使用Xamarin为Visual Studio和C#语言编写了一个简单的应用程序。代码是:

HubConnection hubConnection; IHubProxy chatHubProxy; async void btnConnect_Click(object sender, EventArgs e) { try { TextView log = FindViewById< TextView> (Resource.Id.txtLog); base.OnResume(); hubConnection = new HubConnection("http://192.168.1.3:2010/signalr"); chatHubProxy = hubConnection.CreateHubProxy("MyHub"); chatHubProxy.On< string> ("AddMessage", (message) => { TextView text = FindViewById< TextView> (Resource.Id.txtLog); text.Text = message; }); var localIP = "192.168.1.104"; //the android device has this IPawait hubConnection.Start(); var srvrMessage = chatHubProxy.Invoke< string> ("LoginFromMobile", "mahdi", "p@SsW0Rd", hubConnection.ConnectionId, localIP); if (srvrMessage != null) { log.Text = srvrMessage.Result; } else log.Text = "can't connect to server"; } catch (Exception ex) { TextView text = FindViewById< TextView> (Resource.Id.txtLog); text.Text = ex.StackTrace; } }

当我点击“连接”按钮时,我连接到网络中我的电脑上的SignalR Hub,并且在DEBUG模式下一切正常。但不幸的是,当我在RELEASE模式下编译相同的应用程序时,我收到以下错误:
在调试模式下运行的同一Android应用程序在发布模式下崩溃

文章图片

我不明白为什么......请告诉我我需要考虑什么才能使应用程序在发布模式下正常工作。有任何许可问题吗?有些配置或设置缺失?您的指南真的很有帮助和赞赏。
答案如果某些东西在调试模式下工作但没有处于发布模式,那么很可能问题是链接器在生成Release二进制文件时不包括你的dll。
如果您在解决方案资源管理器中双击Android项目,则可以更改Build- > Android Build下的设置。
您需要为配置选择Release,然后选择Linker选项卡。如果您选择“不链接”所有dll,您的项目引用将包含在Release二进制文件中。这将导致更大的二进制大小,但将帮助您诊断它是否是问题所在。
您可以从Xamarin文档中了解有关链接器的更多信息:https://developer.xamarin.com/guides/ios/advanced_topics/linker/
另一答案【在调试模式下运行的同一Android应用程序在发布模式下崩溃】链接到“仅限Sdk程序集”解决了我的问题。

    推荐阅读