1. 程式人生 > >我正在使用Xamarin的跨平臺框架—Xamarin.Android回憶錄

我正在使用Xamarin的跨平臺框架—Xamarin.Android回憶錄

一、緣起

在自己給別家公司做兼職外包的時候,已經明確知道外包的活不是那麼好乾的,一般在經歷了初期熱血澎湃的激情後,逐漸冷淡,憤怒,再冷淡,再憤怒…,聽上去好像高潮迭起,但令人尷尬的是,這高潮迭起我們都不想要,以至於最後都想草草結束,一走了之。但當我們把Android移動應用委託第三方開發後,還是未能料到產品會如此粗糙,在不能確定這產品要到何時才能與觀眾見面時,我們果斷終止了戀愛。

於是接下來可選的方案有限,初期採用好評如潮的phonegap開發後,其介面的流暢速度,尤其以下滑滾動速度最讓人不能接受,就像待嫁新娘一樣,姍姍來遲不說,你拉她往前走,她卻要在原地停頓一下,再走一點,非常不情願,那既然不能在你情我願的情況下共同生活,我只能轉身留給她越來越模糊的背影…

最後,不得已,選擇了我到現在還算比較滿意的,比較強健的Xamarin.Android。一定要強調的是,使用Xamarin.Android開發的應用體積確實要比java開發出來的要大很多,基本演算法是:2.9M的必備包+2.8M處理器相容包(如果你不打算相容X86架構的移動處理器,那麼不用此包也行)=5.7M,就說你的應用剛開始就有5.7M的體型,但是我觀察了很多熱門常規應用(非遊戲,遊戲包一般都很大),都已經10幾M,20多M,30多M,所以目前體積對我來說,不是太大問題。

二、當前

我們開發的是一款幼兒園的移動產品,這是我們目前產品的結構,我這裡使用的Xamarin.Studio(XS),當然也可以使用VS2012之類的

image

下面看看前端展示層的具體結構

QQ圖片20140707130447

接下來的這個就是公共庫,也即PCL庫

image

關於PCL庫,多說一些,PCL庫也分為多個版本,每個版本適配的目標不一樣,比如,我使用的PCL-78 就是下面這個模樣

image

我建議使用這個最新的版本,一些成熟的類庫,比如NewtonSoft.Json,還有SQLite的.NET PCL版本都能夠使用。PCL類庫聽上去很美,當然實際上也不錯,不過也有一些注意問題,比如WebRequest,不同的平臺支援的WebRequest不太一樣,某些屬性用法還不一樣,比如AddRange,新增Range頭的重要性不言而喻,在wp8平臺是這樣使用:

protected
override System.Net.HttpWebRequest BeginRequest() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.AllowReadStreamBuffering = false; request.AllowWriteStreamBuffering = false; if (this.existsFileLength > 0) request.Headers["Range"] = string.Format("bytes={0}-", this.existsFileLength); request.Method = "GET"; return request; }

而在Xamarin.Android中是這樣的:

protected override System.Net.HttpWebRequest BeginRequest ()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create (uriString);
            request.AllowReadStreamBuffering = false;
            request.AllowWriteStreamBuffering = false;
            if (this.existsFileLength > 0)
                request.AddRange (this.existsFileLength);
            request.Method = "GET";
            return request;
        }

今天先寫到這裡,後面再慢慢介紹整個開發過程以及注意事項。

三、打針

我想每個開發者應該都很清楚,如果要開發完成一款完整的產品,需要很多腦力和精力的,如果想一蹴而就,似乎不太可能。想要在Xamarin平臺上開發的朋友,瞭解一點英文是必要的,因為可能會經常去 bing.com 搜尋外國資料,我相信這一點絕大部分朋友都沒有問題。

忍受煩躁也是必須要具備的,對於一個新的東西,一些時候可能查了半天都沒有解決,可能會上火,壓制自己的火氣或者在無人區發洩火氣,並清楚的告訴自己,解決了一個又一個小問題,就離成功又進了一步。

如果真要想開發出一款產品,一定是需要實踐的,老是看文章,不動手是不行的,也許有頂尖聰明的人(我也相信有)是能過目不忘或者能夠看幾遍就會的,但如果你自己評估自己,得到的結論自己不是頂尖聰明的,還是需要動手的。

四、沒圖你說個JB

鑑於看文章時,經常看到有人說“沒圖你說個JB”,我還是要貼上我們產品移動端的圖,是android版本的。

Screenshot_2014-06-09-18-57-41 Screenshot_2014-06-17-17-59-36

Screenshot_2014-06-09-18-56-37 Screenshot_2014-06-09-18-58-33

五、原始碼呢

原始碼肯定是沒有的,因為這是一個用於商業的產品,是不合適給出原始碼的。不過我以後的文章中關鍵的一些原始碼還是會給出的,便於理解。

六、真實產品

如果想體驗一下產品,可以用手機訪問 m.kankanbaobei.com 下載android版本的應用

體驗賬號:

老師:16856785678 密碼:123456

家長:19856785678 密碼:123456

完畢。