一想到明天是星期五,不對(duì),是今天,心里就很激動(dòng),畢竟明天沒(méi)課。激動(dòng)之余,來(lái)寫一篇博客,記錄一下最近踏坑Xamarin開發(fā)校園助手APP的一些事兒。也許更像是一篇流水賬。

      在扯Xamarin之前,有必要先交代一下背景。

  自從我上大學(xué)以來(lái),一直在做校園助手,直到現(xiàn)在。完成一個(gè)優(yōu)秀的校園助手,是我大學(xué)中為數(shù)不多的幾個(gè)夢(mèng)想之一。想要制作一款軟件,就必須要選擇一種合適的語(yǔ)言或平臺(tái),喜愛(ài)微軟的我,選擇了C# via .Net。在匆匆了解了C#的基礎(chǔ)后,便開始嘗試使用WPF做一些簡(jiǎn)單的東西。然后這個(gè)時(shí)候的境界就停留在拖控件,不過(guò)好在也用拖控件的方式完成了一款Win32平臺(tái)上的校園WIFI助手,結(jié)構(gòu)簡(jiǎn)單,功能簡(jiǎn)單。當(dāng)然此間接觸了一些HTTP協(xié)議的基礎(chǔ)知識(shí)。后來(lái)入手微軟的Windows Phone手機(jī),于是生出了在WP上開發(fā)校園WIFI助手的想法,有想法就有行動(dòng),不久后,成功完成了一個(gè)簡(jiǎn)易助手,叫《工大WIFI助手》,發(fā)布在了Windows商店。眾所周知,無(wú)論是WinRT,SilverLight還是WP開發(fā),他們的技術(shù)體系基本是相通的,都源于WPF,擁有熟悉的依賴屬性,數(shù)據(jù)綁定,XAML等。針對(duì)這些內(nèi)容的學(xué)習(xí),為以后做UWP開發(fā)做了一些鋪墊。

  早在14年10月初,微軟就開始了Windows Insider計(jì)劃,我也加入了其中。對(duì),我不只希望做一名Insider,更希望做一個(gè)懂開發(fā)的Insider。也就在15年初的時(shí)候,微軟的Windows10開發(fā)已經(jīng)在整個(gè)微軟圈子里面開始火了起來(lái),許多以前的WP開發(fā)者也都來(lái)踩坑。我也正式在這個(gè)時(shí)候開始學(xué)習(xí)UWP開發(fā)。同樣的,UWP開發(fā)也有純正的WPF血統(tǒng),入門還算順利。在隨后的UWP學(xué)習(xí)和開發(fā)中,對(duì)XAML,數(shù)據(jù)綁定,依賴屬性等概念又有了深一步的認(rèn)識(shí)。在15年后半段,我第一個(gè)像樣的校園助手《工大助手》初版正式完成具備了一些基礎(chǔ)的查詢功能。后來(lái)又陸陸續(xù)續(xù)修改,添加了一些新的東西。期間也對(duì)基本學(xué)習(xí)到了UWP平臺(tái)的東西有了更多一步的認(rèn)識(shí)。直到后來(lái)。

  后來(lái)Xamarin來(lái)了。

  在我的950XL頻繁罷工后,我意識(shí)到信仰和生活是有差距的,于是我入手了第一臺(tái)自己的安卓設(shè)備——小米5。很自然的,遇到了一個(gè)現(xiàn)實(shí)的問(wèn)題:在我的大學(xué)里,并沒(méi)有一款像樣的安卓版校園助手。怎么辦呢?自己來(lái)做。其實(shí)決定做安卓版的《工大助手》,有一個(gè)重要的原因是我被Xamarin這個(gè)技術(shù)吸引了。這個(gè)時(shí)候Xamarin開發(fā)在跨平臺(tái)開發(fā)領(lǐng)域愈發(fā)火熱,包括微軟收購(gòu)Xamarin并且宣布Xamarin免費(fèi)。我一個(gè).net系的偽程序員,在對(duì)Java無(wú)感,而又不想深入學(xué)習(xí)安卓的情況下,Xamarin成我了我的理想工具。在Xamarin.Forms中,我可以用熟悉的Xaml、喜愛(ài)的C#來(lái)開發(fā)安卓和IOS應(yīng)用,簡(jiǎn)直太完美了。說(shuō)干就干,我開始正式踩坑。

       用Xamarin.Forms開發(fā)的好處在于它的邏輯代碼全部采用C#編寫,不用去學(xué)習(xí)IOS和安卓的細(xì)節(jié)知識(shí),而且有比較完善的MVVM框架可用。在我之前的UWP校園助手項(xiàng)目中,我使用了MVVM開發(fā)模式,所以從UWP項(xiàng)目到Xamarin.Forms項(xiàng)目,在一定程度上就等價(jià)于更換掉MVVM的View層。代碼的復(fù)用率達(dá)到了70%左右。雖是恰巧,可細(xì)想也是必然。于是我斷斷續(xù)續(xù)用了一周的時(shí)間,把《工大助手》成功用Xamarin.Forms重寫了,并且發(fā)布了可用的APK。值得一提的是,我在此期間對(duì)Android的了解基本為0,一切工作都是Xamarin替我完成的。

      


  在實(shí)際的開發(fā)中,大問(wèn)題沒(méi)有,小問(wèn)題卻也不斷。按照整個(gè)流程,大致理了理。

  第一步是環(huán)境的安裝:

  Xamarin開發(fā)工具既可以用Xamarin for VS,也可以用Xamarin Studio。本著對(duì)VS比較熟悉和喜愛(ài),我選擇了用VS。安裝VS2015的時(shí)候,可以選擇添加Xamarin工具。安裝過(guò)程其實(shí)說(shuō)復(fù)雜也不復(fù)雜,大家雖然很多人遇到問(wèn)題,但問(wèn)題莫過(guò)于無(wú)法安裝安卓相關(guān)的一些工具和SDK,解決辦法也很簡(jiǎn)單,找個(gè)好點(diǎn)的梯子,所有問(wèn)題都沒(méi)有了。值得一提的時(shí)候,就在我寫這篇博客的當(dāng)天2016.12.08,谷歌在大陸的開發(fā)者網(wǎng)站上線了,地址是https://developers.google.cn/,此處應(yīng)該有掌聲。

  第二步是建立項(xiàng)目:

  在VS中可以選擇Cross-Platform——Xamarn.Forms相關(guān)的模板建立項(xiàng)目,一般項(xiàng)目分為Portable和Shared兩種方式,這個(gè)要根據(jù)需求選擇,但一般選擇Portable也沒(méi)問(wèn)題。在MVVM框架的選擇中,我糾結(jié)了好久,最后選擇了微軟自家Prism框架,它提供了對(duì)Xamarin的良好支持,自帶一個(gè)項(xiàng)目模板,可以直接在新建項(xiàng)目的時(shí)候選擇該模板建立Xamarin.Forms項(xiàng)目,它會(huì)為我們自動(dòng)搭建好一個(gè)MVVM的框架,使我們專注于自己的核心業(yè)務(wù)邏輯。至于該框架的介紹對(duì)比,博客園中有大神已經(jīng)寫博分析過(guò)了。

 

  以上兩步雖然簡(jiǎn)單,但是確實(shí)我們開發(fā)Xamarin的基礎(chǔ)和敲門磚。在這兒引用博客園大神的相關(guān)文章:

  老司機(jī)學(xué)新平臺(tái) - Xamarin開發(fā)環(huán)境及開發(fā)框架初探http://www.cnblogs.com/teddyma/p/xamarin_perfect_dev_env_and_frameworks.html

  老司機(jī)學(xué)新平臺(tái) - Xamarin Forms開發(fā)框架二探 (Prism vs MvvmCross)http://www.cnblogs.com/teddyma/p/xamarin_dev_framework_research_2.html