問題
開發跨平台的原生應用程式 (Native App),勢必要考慮到各種行動裝置的開發與測試情境,採用模擬器來測試原生應用程式是最常見的作法。當您選擇 Xamarin.Forms 來建置 App 時,最讓人頭疼的就是架設好完整的開發環境,然而跨平台的 App 會牽涉到許多平台上的限制,對於軟硬體配備的選擇就是一門大學問,那麼想要開發 Xamarin.Forms 的應用程式,要如何準備相關的軟硬體環境呢?
解答
開發跨平台的原生應用程式 (Native App),勢必要考慮到各種行動裝置的開發與測試情境,採用模擬器來測試原生應用程式是最常見的作法。當您選擇 Xamarin.Forms 來建置 App 時,最讓人頭疼的就是架設好完整的開發環境,然而跨平台的 App 會牽涉到許多平台上的限制,對於軟硬體配備的選擇就是一門大學問,本篇文章將說明在不同需求下需要考量的軟硬體配置。
若您想同時開發出 iOS / Android / UWP 等跨平台應用程式,你必須至少準備兩台電腦才有辦法建置出完整的跨平台應用程式。
電腦與作業系統需求
Mac OS X
- 作業系統需求:Mac OS X Yosemite(10.10) 或者以上版本
- 需要安裝最新版本的 Xcode 與 iOS SDK ( 可以從 iOS Developer Center 來下載 )
- 安裝最新版本的 Xamarin Studio ( 可以從 這裡 來下載 )
Windows
- 作業系統需求:Windows 10 Professional
- 需要安裝 Hyper-V 服務
- 安裝 Visual Studio 2015 ( 可以從 這裡 來下載 )
開發工具需求
透過 Xamarin.Forms 來開發跨平台的原生應用程式 (Native App),在不同的作業系統與整合開發環境 IDE 工具能夠產生出不同類型的原生應用程式,目前有以下兩個 IDE 工具可選:Visual Studio 2015 (只能執行在 Windows 上面)
- 可以開發、建置原生 Android / UWP 應用程式。
- 安裝時,請記得要勾選 Android 原生開發套件(SDK) 與 通用應用程式開發工具 (UWP SDK) 安裝到您的電腦下。
Xamarin Studio (只能執行在 Mac 電腦上)
- 可以開發、建置原生 Android / iOS 應用程式。
- 您必須額外安裝 iOS SDK & Xcode 等工具程式。
若您想同時開發出 iOS / Android / UWP 等跨平台應用程式,你必須至少準備兩台電腦才有辦法建置出完整的跨平台應用程式。
常見問題解答
- 我可否在 Mac OS X 上面安裝虛擬機器,並且在 VM 中跑 Windows 作業系統,這樣我可以用一台 Mac 電腦進行跨平台應用程式開發嗎?
Windows 10 Mobile 模擬器需要 Hyper-V 服務才能夠運行,因此,若在 Mac OS X 上的 Parallels Desktop Pro 有支援 nested virtualization,因此開 Windows 10 Mobile 模擬器上安裝虛擬機器,並且在 VM 中跑 Windows 作業系統(感謝 Yu-Hsin Hung 幫忙修正)。 - 當 Android & iOS 有最新的SDK推出,Xamarin 何時可以支援這些最新的 SDK?
對於有新版本的 Android & iOS 推出後,根據以往經驗,最多 2~7天,Xamarin 就會推出相對應的更新,讓您可以使用這些最新的 SDK 來開發這些應用程式。 - 當我選擇使用 Xamarin,我的應用程式有多少比例使用 C# 撰寫出來?
您的應用程式將會 100% 都使用 C# 來撰寫並開發出來,這包含了 UI、商業邏輯。 - 在進行 Xamarin.Forms 應用程式開發時候,我可以使用第三方的 .NET 程式庫嗎?
是的,例如,您可以使用 Json.NET NuGet 套件在 PCL 專案上或者使用在各個原生專案上。 - 當我在 Windows 作業系統的 Visual Studio 2015 開發 Xamarin.Forms 應用程式,卻無法透過 Xamarin Mac Agent 與遠端 Mac電腦連線?
您需要在 Mac 電腦上啟用遠端登入
功能,並且設定相關帳號可以使用遠端登入功能;若還是不行,請確認 Mac 電腦上沒有做 SSH ( 22 Port)的阻擋。您可以在 Windows 作業系統上,使用類似 Putty 這裡終端機連線工具,設定使用 SSH 方式連線到 Mac 電腦來進行測試。 - 我使用 Xamarin.Forms 進行開發跨平台應用程式,我還需要學習個平台的 UI 定義與設計方法嗎?
若您採用 Xamarin.Forms 進行開發跨平台應用程式,所有的頁面 UI 都會透過 XAML 標記宣告語言來定義;因此,您不再需要學習 Android 的 XML UI定義與 iOS 的 Storyboard。 - 當我使用 Visual Studio 開發 Xamarin.Froms 應用程式,我可以在 Windows 系統上看到 iOS 模擬器嗎?
當然可以,若您使用 Visual Studio 開發 Xamarin.Forms應用程式,可以同時看到與操作 Android, iOS, Windows 10 Mobile 的模擬器;若您想要在 Windows 作業系統上使用 iOS 模擬器,請安裝 iOS Simulator (for Windows) - 哪個 Visual Studio 2015 版本支援 Xamarin.Forms 的應用程式開發
全系列的 Visual Studio 2015 都可以開發 Xamarin.Forms 的應用程式,包含 Visual Studio 2015 社群版本。 - 由於 Xamarin.Forms 程式會在 PCL 專案內開發,我可以在 PCL 專案內呼叫原生(Android/iOS/UWP)專案內的各項功能嗎?(例如:拍照、GPS定位等等)
這絕對是沒有問題,您可以透過插件 (Plug-ins)或者 Xamarin.Forms 內建的相依性服務功能,來做到這些需求。 - 想要使用 Xamarin.Forms 開發應用程式,有哪些技術項目是要學的?
只要您精通 C# / XAML / MVVM 這些觀念與技巧,就可以快速開發出容易維護與高效能的原生應用程式。 - 我可以針對特定平台的 UI 進行客製化設計,例如:在 Android 平台中的文字輸入盒,可以有四週框線?
完全沒有問題,您可以透過 UI Renderer 技術,針對不同平台來客製化 UI 要顯示成為甚麼樣貌。 - Xamarin.Forms 有支援 UI 自動測試功能嗎?
您可以使用 Xamarin.UITest 來撰寫 UI 自動測試的程序,並且透過 Xamarin 提供的 Test Cloue,將您的應用程式一次佈署不同的實體使用上,得到在不同手機上的測試結果與當時的螢幕截圖。注意,這項服務需要另外付費。 - 哪些種類的應用程式,不適合使用 Xamarin.Forms 方式來進行開發。
具有豐富變化的UI設計(例如 Game)、需要使用大量原生平台專屬 API (大量地圖方面的應用)、多媒體應用程式(AR / VR)、客製UI比起共用程式碼來的重要的應用程式(每個平台,需要大量客製化不同樣貌的UI)