2017/02/03

[軟件製造]淺談Xamarin跨平台行動應用開發初體驗


之前為了專案規劃需要,花了不少時間研究軟硬體和行動APP的各種開發方式,
雖然後來案子停了,不過對各種行動化的開發方案瞭然於胸(誤,其實沒有)。
(這個意思,大概是廠商可能採用的開發方式,和那種方法某些比較搞缸的地方,可能的限制)
然後看到台中市立圖書館在年前推出他們給讀者的行動APP,嗯!其實小弟起跑早很多,只是......
在過完年準備上班收心前夕,忍不住拾回老本行動手一下(畢竟嘴砲沒辦法寫一口好程式 Xp)
搞了一支「行動應用概念版」。
順道一提,這支APP用的是目前很新的 Xamarin.forms 開發方式
大抵就是用.NET Framework的C#語言使用Microsoft Visual Studio讓你作到「跨平台開發」

(給你滿滿的大平台 XD)
-->也就是Android、iOS、WindowsPhone (且是Native APP原生碼,效能最好的方式~細節就不提了,攻城獅請自行延伸)
當然還是要針對平台差異作調整和設定,在小弟的初體驗中這點我有深深的體會!

雖然是驗證概念,不過有實際的功能可以玩玩看!
使用情境是針對某圖書館的讀者:
1、掃描ISBN查詢:當人在外頭看到一本書,可以使用APP掃描一下書本的ISBN條碼,查詢這本書在圖書館有沒有?目前可外借還是要預約。
2、行動借閱證:讀者不一定把借書證帶在身上(但是手機通常會),只要輸入正確的帳號密碼,APP就會產生借書證的條碼,忘記戴(or 瘦皮包)還是可以借書或快樂使用圖書館相關資源。
3、查詢圖書館位置、開放時間、交通方式、服務電話等。
我沒有很嚴謹的Debug,也沒有美編,有興趣的可以下載附件(安全無毒)
然後將解開的iLibAPP.apk檔案複製到手機內安裝,目前在Android 4.4~7.0都稍微測試過(概念版,切記切記)。
1、主畫面

 
2、行動借閱證

 
3、掃描ISBN


4、查資訊(開啟網頁)


5、打電話


目前Android版已階段完成,要完成iOS跟WindowsPhone版的話,還需要一點硬體:
1、Apple Mac電腦或筆電:Apple開發環境只能安裝在Apple的機器
2、Apple 手機或平板:為了進行測試程式及佈署需要,理論上手機/平板都可以執行
3、Win8/10 手機或平板:為了進行測試程式及佈署需要,理論上手機/平板都可以執行

接下來是這一趟玩下來的一點小小的感想:
1、 Xamarin 確實減少開發人員從頭學習語言的痛苦,時間直接花在解決問題上
不必為了Android學Java語言、為了Apple學Object C、Swift、為了WindowsPhone又學XX...(可能沒什麼人為它學習,直接放棄了 XD)
(減少各平台開發人員?!?我保留,Team似乎可以縮小一點,但是人數絕不是1/3)
2、開發真的可以快,少寫很多程式碼,然後可以滿足各種平台需求。
but...(人生有時候就是這個but),沒你想像地那麼美!
一個是只有精簡版的.netframework、另一個是要針對Android、iOS、WindowsPhone平台差異作調整和設定。
後者還是不可避免要瞭解其他平台程式開發的概念,才能在針對該平台上某些實作(如控制該平台的硬體裝置)的時候解決問題。
但是一份核心邏輯程式碼,讓你易於維護和功能擴充是貨真價實的。
未來如果繼續玩,可以持續精進的方向:
1、程式元件精簡,加速載入時間,並且跨入新開發架構-->研究.NET Standard Library

2、深入瞭解跨平台開發的差異
3、控制行動裝置各種硬體,如、GPS、G-Sensor、錄音機、藍芽...(喔!讓我想到PDA測量外業自動化了)
4、UI及Layout的客製化和精緻
5、增加使用外部PCL(Portable Class Library,DLL)的功力,也就是看到第三方的東西,就會用的feel。
(同一個DLL,在這個平台要這樣、另一個要那樣初始化,不知道還真困擾)
6、開發WebService(WebAPI)增加功能,如、讀取外部Open Data、SignalR傳訊息...等。

ps.人有點年紀以後再摸新東西,學習效果真的有差。