簡體   English   中英

在調試模式下運行的同一Android應用程序在發布模式下崩潰

[英]Same Android app who runs on Debug mode, crashes on release mode

我使用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 IP

            await 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模式下編譯相同的應用程序時,我收到以下錯誤:

在此輸入圖像描述

我不明白為什么......請告訴我我需要考慮什么才能使應用程序在發布模式下正常工作。 有任何許可問題嗎? 有些配置或設置缺失? 您的指南真的很有幫助和贊賞。

如果某些東西在調試模式下工作但沒有處於發布模式,那么很可能問題是鏈接器在生成Release二進制文件時不包括你的dll。

如果您在解決方案資源管理器中雙擊Android項目,則可以更改Build - > Android Build下的設置。

您需要為配置選擇Release,然后選擇Linker選項卡。 如果您選擇“不鏈接”所有dll,您的項目引用將包含在Release二進制文件中。 這將導致更大的二進制大小,但將幫助您診斷它是否是問題所在。

您可以從Xamarin文檔中了解有關鏈接器的更多信息: https//developer.xamarin.com/guides/ios/advanced_topics/linker/

鏈接到“僅限Sdk程序集”解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM