1. 程式人生 > >使用Xamarin開發手機聊天程式 -- 基礎篇(大量圖文講解 step by step,附原始碼下載)

使用Xamarin開發手機聊天程式 -- 基礎篇(大量圖文講解 step by step,附原始碼下載)

      如果是.NET開發人員,想學習手機應用開發(Android和iOS),Xamarin 無疑是最好的選擇,編寫一次,即可釋出到Android和iOS平臺,真是利器中的利器啊!而且,Xamarin已經被微軟收購併被大力推廣,.NET開發人員將時間投資在Xamarin上,以應對移動開發的熱潮,應該是值得的。

        好了,廢話不多說,就開始吧。本系列文章將詳細介紹如何使用Xamarin開發出一個簡單的即時通訊IM聊天系統(文末有原始碼下載,可先睹為快),本文作為第一篇基礎篇,將著重介紹Xamarin Android和Xamarin iOS環境的搭建,包括安裝、設定、模擬器、部署、執行除錯等。本系列後面的文章將詳細介紹手機聊天系統結構原理和具體程式碼實現。

一.搭建環境

1. 安裝 Xamarin。

     VS2017已經集成了Xamarin,只要在安裝的時候,將“使用.NET的移動開發”選項勾選上,即可。

      

2.設定Xamarin Android。

(1)啟動VS 2017之後,開啟選單 工具->選項->Xamarin->Android設定,在設定面板上做如下設定:

        

3.設定Xamarin iOS。

(1)在我的MacBook筆記本上安裝 Visual Studio for Mac。

(2)在MacBook的系統偏好設定 中找到“共享”選項,開啟“共享”介面如下。 開啟遠端管理和遠端登入。

         

(3)在PC端VS “工具” 選擇卡中依次選擇 IOS ->Xamarin.Mac代理,點選左下方的“Add Server”按鈕,輸入對應遠端Macbook機器的IP,並進行登入。

         

(4)登入成功後,介面上會顯示如下連結的圖標表示遠端成功。

          

(5)連線成功後,在VS中就可以進行除錯MAC機器上的模擬器或者真機了。

         

(6)在PC端VS中,開啟選單 工具->選項->Xamarin->iOS設定,在設定面板上做如下設定:

        

二. 新建Xamarin.Forms專案、編譯

  Xamarin.Forms 是Xamarin提供的一個套件,用於跨移動平臺的Form應用開發,所以,如果是使用Xamarin開發App,那麼,Xamarin.Forms 將是很好的選擇。

1.新建一個Cross-Platform跨平臺專案,選擇Cross Platform App(Xamarin)。

     

2.專案新建成功後,會在解決方案管理器中,生成三個專案。

   

   XamarinDemo 專案是可移植的類庫,App的絕大部分邏輯和UI都是在其中完成。

   XamarinDemo.Droid 專案對應了安卓版本,XamarinDemo.iOS 專案對應了iOS版本,它們都引用了 ESFramework.XamarinDemo 專案。

   對於一般簡單的應用而言,只需要在XamarinDemo中編寫程式碼就可以了,XamarinDemo.Droid 和 XamarinDemo.iOS中的程式碼只需要做少量修改。   

3.編譯 XamarinDemo.Droid 專案

        在解決方案管理器中選中 XamarinDemo.Droid 專案,右鍵->屬性,開啟設定面板。

   

  在專案屬性面板中,要選擇編譯所使用的安卓SDK的版本號,我選擇的是最新6.0。

4.編譯 XamarinDemo.iOS 專案

       在解決方案管理器中選中 XamarinDemo.iOS專案,右鍵->屬性,開啟設定面板。

       

        在專案屬性面板中,選擇編譯所支援的CPU體系結構,由於現在是使用iOS模擬器,所以選擇x86_64。

        如果是使用真機除錯,則應該選擇 ARMv7+ARMv7s+ARM64。

三.部署、除錯

  編譯成功後,就可以嘗試部署到虛擬機器,並執行除錯了。

1. 安卓版本

(1)啟動安卓虛擬機器。

    執行上述的Genymotion。  

       

       選擇6.0的虛擬機器,點選Start按鈕執行起來。

       

(2)部署

  在VS上的工具欄,選擇剛才啟動的虛擬機器例項Genymotion Custom Phone - 6.0.0,點選除錯按鈕(綠色的三角形),即可開始部署、執行的流程。(注意,要選擇Debug模式)

  

(3)除錯

  部署執行成功後,模擬器就會顯示demo App 的UI介面:

    

  此時,可以在原始碼中加入斷點開始除錯程式了。

2.iOS版本

(1)啟動虛擬機器

      

(2)在VS上的工具欄,選擇iPhone 6 Plus iOS 11.2,點選除錯按鈕(綠色的三角形),即可開始部署、執行的流程。

        

(3)除錯

  部署執行成功後,模擬器就會顯示如下Demo的登入介面:

        

四.原始碼下載

  雖然還未正式開始介紹聊天程式的程式碼實現,但是還是先將demo的原始碼分享給大家,基於以上介紹的內容,大家已經可以將demo執行起來看效果了。並且,原始碼中除了Xamarin移動端外,還包含了聊天服務端和PC客戶端以及WebSocket客戶端,而且,Xamarin移動端和PC客戶端以及Web端之間都可以相互聊天哦!

  下面是手機端執行的效果圖:

              

(1)原始碼:服務端+PC客戶端 (基於VS 2010)

(2)原始碼:Xamarin 移動端(包括Android 和 iOS)    (基於VS 2017)

  最後,在使用Xamarin開發本Demo的過程中,踩過了很多很多的“坑”,對這些坑的解決方案我們也會在本系列的文章中分享出來,如此能為後來者節省一些時間。敬請期待!

相關推薦

使用Xamarin開發手機聊天程式 -- 基礎大量圖文講解 step by step原始碼下載

      如果是.NET開發人員,想學習手機應用開發(Android和iOS),Xamarin 無疑是最好的選擇,編寫一次,即可釋出到Android和iOS平臺,真是利器中的利器啊!而且,Xamarin已經被微軟收購併被大力推廣,.NET開發人員將時間投資在Xamarin上

Python全棧開發記錄_第八模組收尾工作 json & pickle & shelve & xml

  由於上一篇篇幅較大,留下的這一點內容就想在這裡說一下,順便有個小練習給大家一起玩玩,首先來學習json 和 pickle。   之前我們學習過用eval內建方法可以將一個字串轉成python物件,不過,eval方法是有侷限性的,對於普通的資料型別,json.loads和eval都能用,但遇到特殊型別的時

Linux基礎知識檔案在系統中的傳輸歸檔及壓縮

一、檔案 在系統中的傳輸(scp和rsync命令) 一. scp與rsync的區別 scp傳輸速度較慢,傳輸過程是一種資料的重新建立,連同屬性一塊建立。 rsync傳輸速度快,傳輸過程是資料的同步,是一種映象複製的過程,並非所有檔案都可以資料同步,可以資料同步的檔案,映

JAVA小白啟蒙:第一個SSM框架搭建示例原始碼下載

  HelloWorld工程原始碼下載 http://download.csdn.net/detail/baidu_31657889/9682606 有償連結(0.1rmb):https://www.fageka.com/Home/Index/sell?id=ctLT7f4

Android 音視訊深入 十六 FFmpeg 推流手機攝像頭實現直播 原始碼下載

原始碼地址https://github.com/979451341/RtmpCamera/tree/master配置RMTP伺服器,雖然之前說了,這裡就直接貼上過來吧1.配置RTMP伺服器這個我不多說貼兩個部落格分別是在mac和windows環境上的,大家跟著弄MAC搭建RT

Spring boot基於redis實現附近的人原始碼下載

核心原始碼 public class NearbyPO { @NotNull(message = "id值不能為空") private Integer id; @NotBlank(message

VS2013 MFC連線Access資料庫ADO詳細版例項操作含Combo Box讀取資料庫內容原始碼

話不多說,先上圖,如果你需要的是這樣的程式,那麼可以下載下來看一看,帖子裡也會附上比較具體的操作步驟:先附上下載地址:程式下載地址 程式已經經過VS 2013+Windows 7+Access 2003的測試(執行出現其他問題應該多為環境問題,解決辦法各位可以自行百度)具體的

java爬蟲爬取網際網路上的各大影視網站---360影視原始碼下載

關於爬蟲: 全球資訊網上有著無數的網頁,包含著海量的資訊,無孔不入、森羅永珍。但很多時候,無論出於資料分析或產品需求,我們需要從某些網站,提取出我們感興趣、有價值的內容,但是縱然是進化到21世紀的人類,依然只有兩隻手,一雙眼,不可能去每一個網頁去點去看,然後再複製貼上。所以

可在廣域網部署執行的即時通訊系統 -- GGTalk總覽原始碼下載

    (最新版本:V6.0,2017.12.11 。即將推出Xamarin移動端版本,包括 Android 和 iOS)        GGTalk開源即時通訊系統(簡稱GG)是QQ的高仿版,同時支援區域網和廣域網,包括客戶端(PC客戶端、android移動端)、服務端、資料庫。從2013年最初的GG1.

SSM框架---搭建示例業務原理並原始碼下載

背景 前段時間,忙這忙那的,又是專題分析,又是PMP培訓,一直都沒有辦法閒下來。最近又換了班組,昨天才把家當都搬好,今天終於有空可以寫點東西了。上次給班組成員進行了一期Java的基礎培訓,這次準備來個第二發,雖然這兩期培訓並沒有太大的連貫性,但作為JAVA入門,掌握這些內容,基本是夠了。此外,因為框架這種東

Android中AIDL實現程序通訊原始碼下載

AIDL概述 之前的部落格《Android中通過Messenger與Service實現程序間雙向通訊》演示瞭如何通過Messenger實現與Service進行跨程序通訊,即IPC。但用Messenger實現的IPC存在一點不足:Service內部維護著一個Me

【android】自定義ProgressDialog實現暫時隱藏進度值並顯示等待狀態原始碼下載

有時,我們需要訪問網路才能獲取到需要操作的任務數(例如下載的檔案數),而在伺服器返回任務數之前要想隱藏進度百分比和進度數值,就需要我們自己重寫ProgressDialog。等到獲取到任務數後再把進度值和百分比顯示出來。先上效果圖: 關鍵程式碼: public clas

AS完美匯入Android原始碼原始碼下載

android原始碼版本: android-8.1.0_r1,大約佔34g,刪除了.repo等檔案,可以完美匯入Android Studio,不報錯誤,提供給硬碟不夠充足的朋友們,如下圖所示。 下載地址 匯入Android Studio只需三步

Android 音視訊深入 十七 FFmpeg 獲取RTMP流儲存為flv 原始碼下載

專案地址 https://github.com/979451341/RtmpSave 這個專案主要程式碼我是從雷神那弄過來的,不愧是雷神,我就配個環境搞個介面就可以用程式碼了。 這一次說的是將RTMP流媒體儲存成為一個本地的FLV檔案。因為播放視訊本身佔有很多技術難點,我先不

Zookeeper+websocket實現對分散式伺服器的實時監控原始碼下載

​ 我就是個封面 Zookeeper簡介 Zookeeper是Hadoop的一個子專案,它是分散式系統中的協調系統。 簡單來說就是一個Zookeeper註冊同步中心,內部結構為一個樹形目錄,每個節點上可以存放一定量(預設的資料量上限是1M,但是可以通過調整引數修改)的資料,客戶端(一段通過Zook

微信小程式開發基礎之請求、上傳、下載

針對前幾篇的基本的瞭解,然後我們首先要先學習和了解它的基本語法,我主要從API官網上學習,然後總結在這篇部落格中。供自己後期檢視。以備不時之需。因為自己也是初學者,很多的都是按照API來學習講解。 按照API的順序,我先學習網路的模組 一、請求:wx.request(OB

python3-開發面試題python6.23基礎2

漢字 2個 特殊 問題 ase 第一個 else () 判斷 1、請至少列舉5個 PEP8 規範(越多越好)。 一、代碼編排 1、縮進。4個空格的縮進,不使用Tap,更不能混合使用Tap和空格 2、每行最大長度79,換行可以使用反斜杠,最好使用圓括號。換行點要在操作符

Spring系列-基礎3-搭建簡易的tomcat開發環境

背景介紹 專案上成員已經開始使用Spring MVC或Spring Boot寫後臺介面,但是由於原有環境的一些限制,使得在實際開發時,會浪費很多時間在程式設計以外的事情上。專案上使用的應用伺服器是WebLogic,是一個功能很強大,但又很重量級的伺服器。我們開發使用

Python全棧開發記錄_第九類的基礎_封裝_繼承_多型

  有點時間沒更新部落格了,今天就開始學習類了,今天主要是類的基礎篇,我們知道面向物件的三大特性,那就是封裝,繼承和多型。內容參考該部落格https://www.cnblogs.com/wupeiqi/p/4493506.html   之前我們寫的都是函式,可以說是面向過程的程式設計,需要啥功能就直接寫啥,

C#之基礎程式三大結構:順序、分支、迴圈for迴圈與while迴圈的轉換C#乘法表

     今天我們來分享一下VS視訊中第四講的內容,這篇文章我們會簡單分享一下程式中的三大結構,重點分享我們的迴圈體結構。 一、程式中的三大結構 順序結構、分支結構、迴圈結構 【順序結構】 程式中的各個操作是按照它們在原始碼中的排列順序依次執行的,如下圖