[Xamarin]我的Xamarin填坑之旅(一)
一想到明天是星期五,不對,是今天,心里就很激動,畢竟明天沒課。激動之余,來寫一篇博客,記錄一下最近踏坑Xamarin開發校園助手APP的一些事兒。也許更像是一篇流水賬。
在扯Xamarin之前,有必要先交代一下背景。
自從我上大學以來,一直在做校園助手,直到現在。完成一個優秀的校園助手,是我大學中為數不多的幾個夢想之一。想要制作一款軟件,就必須要選擇一種合適的語言或平臺,喜愛微軟的我,選擇了C# via .Net。在匆匆了解了C#的基礎后,便開始嘗試使用WPF做一些簡單的東西。然后這個時候的境界就停留在拖控件,不過好在也用拖控件的方式完成了一款Win32平臺上的校園WIFI助手,結構簡單,功能簡單。當然此間接觸了一些HTTP協議的基礎知識。后來入手微軟的Windows Phone手機,于是生出了在WP上開發校園WIFI助手的想法,有想法就有行動,不久后,成功完成了一個簡易助手,叫《工大WIFI助手》,發布在了Windows商店。眾所周知,無論是WinRT,SilverLight還是WP開發,他們的技術體系基本是相通的,都源于WPF,擁有熟悉的依賴屬性,數據綁定,XAML等。針對這些內容的學習,為以后做UWP開發做了一些鋪墊。
早在14年10月初,微軟就開始了Windows Insider計劃,我也加入了其中。對,我不只希望做一名Insider,更希望做一個懂開發的Insider。也就在15年初的時候,微軟的Windows10開發已經在整個微軟圈子里面開始火了起來,許多以前的WP開發者也都來踩坑。我也正式在這個時候開始學習UWP開發。同樣的,UWP開發也有純正的WPF血統,入門還算順利。在隨后的UWP學習和開發中,對XAML,數據綁定,依賴屬性等概念又有了深一步的認識。在15年后半段,我第一個像樣的校園助手《工大助手》初版正式完成具備了一些基礎的查詢功能。后來又陸陸續續修改,添加了一些新的東西。期間也對基本學習到了UWP平臺的東西有了更多一步的認識。直到后來。
后來Xamarin來了。
在我的950XL頻繁罷工后,我意識到信仰和生活是有差距的,于是我入手了第一臺自己的安卓設備——小米5。很自然的,遇到了一個現實的問題:在我的大學里,并沒有一款像樣的安卓版校園助手。怎么辦呢?自己來做。其實決定做安卓版的《工大助手》,有一個重要的原因是我被Xamarin這個技術吸引了。這個時候Xamarin開發在跨平臺開發領域愈發火熱,包括微軟收購Xamarin并且宣布Xamarin免費。我一個.net系的偽程序員,在對Java無感,而又不想深入學習安卓的情況下,Xamarin成我了我的理想工具。在Xamarin.Forms中,我可以用熟悉的Xaml、喜愛的C#來開發安卓和IOS應用,簡直太完美了。說干就干,我開始正式踩坑。
用Xamarin.Forms開發的好處在于它的邏輯代碼全部采用C#編寫,不用去學習IOS和安卓的細節知識,而且有比較完善的MVVM框架可用。在我之前的UWP校園助手項目中,我使用了MVVM開發模式,所以從UWP項目到Xamarin.Forms項目,在一定程度上就等價于更換掉MVVM的View層。代碼的復用率達到了70%左右。雖是恰巧,可細想也是必然。于是我斷斷續續用了一周的時間,把《工大助手》成功用Xamarin.Forms重寫了,并且發布了可用的APK。值得一提的是,我在此期間對Android的了解基本為0,一切工作都是Xamarin替我完成的。
在實際的開發中,大問題沒有,小問題卻也不斷。按照整個流程,大致理了理。
第一步是環境的安裝:
Xamarin開發工具既可以用Xamarin for VS,也可以用Xamarin Studio。本著對VS比較熟悉和喜愛,我選擇了用VS。安裝VS2015的時候,可以選擇添加Xamarin工具。安裝過程其實說復雜也不復雜,大家雖然很多人遇到問題,但問題莫過于無法安裝安卓相關的一些工具和SDK,解決辦法也很簡單,找個好點的梯子,所有問題都沒有了。值得一提的時候,就在我寫這篇博客的當天2016.12.08,谷歌在大陸的開發者網站上線了,地址是https://developers.google.cn/,此處應該有掌聲。
第二步是建立項目:
在VS中可以選擇Cross-Platform——Xamarn.Forms相關的模板建立項目,一般項目分為Portable和Shared兩種方式,這個要根據需求選擇,但一般選擇Portable也沒問題。在MVVM框架的選擇中,我糾結了好久,最后選擇了微軟自家Prism框架,它提供了對Xamarin的良好支持,自帶一個項目模板,可以直接在新建項目的時候選擇該模板建立Xamarin.Forms項目,它會為我們自動搭建好一個MVVM的框架,使我們專注于自己的核心業務邏輯。至于該框架的介紹對比,博客園中有大神已經寫博分析過了。
以上兩步雖然簡單,但是確實我們開發Xamarin的基礎和敲門磚。在這兒引用博客園大神的相關文章:
老司機學新平臺 - Xamarin開發環境及開發框架初探(http://www.rzrgm.cn/teddyma/p/xamarin_perfect_dev_env_and_frameworks.html)
老司機學新平臺 - Xamarin Forms開發框架二探 (Prism vs MvvmCross)(http://www.rzrgm.cn/teddyma/p/xamarin_dev_framework_research_2.html)
電腦快沒電了,所以這是一個連載系列……

浙公網安備 33010602011771號