第 1 章的摘要。 如何 Xamarin.Forms 適應?

Download Sample 下載範例

注意

這本書於2016年春季出版,此後一直沒有更新。 這本書中有很多仍然有價值,但一些材料已經過時,有些主題不再完全正確或完整。

程序設計中最令人不快的工作之一是將程式代碼基底從一個平臺移植到另一個平臺,特別是如果該平臺涉及不同的程式設計語言時。 移植程式代碼來重構程式代碼時也有誘惑,但如果兩個平台必須平行維護,則兩個程式代碼基底之間的差異會使未來的維護更加困難。

跨平台行動裝置程式開發

以行動平臺為目標時,此問題很常見。 目前,有兩個主要的行動平臺:執行 iOS 作業系統的 Apple 系列 i 電話 和 iPad,以及各種手機和平板電腦上執行的 Android 操作系統。 另一個重要平臺是 Microsoft 的 通用 Windows 平台 (UWP),可讓單一程式以 Windows 10 為目標。

想要以這些平臺為目標的軟體廠商必須處理不同的使用者介面範例、三個不同的開發環境、三個不同的程式設計介面,以及可能最尷尬的是三種不同的程式設計語言:適用於 i 電話 和 iPad 的 Objective-C、適用於 Android 的 Java,以及適用於 Windows 的 C#。

C# 和 .NET 解決方案

雖然 Objective-C、Java 和 C# 都衍生自 C 程式設計語言,但它們已由非常不同的路徑所演進。 C# 是這些語言的最新版本,而且已以非常有用的方式成熟。 此外,C# 與稱為 .NET 的整個程式設計基礎結構緊密關聯,它支援數學、偵錯、反映、集合、全球化、檔案 I/O、網路、安全性、線程、Web 服務、數據處理,以及 XML 和 JSON 讀取和寫入。

Xamarin 目前提供使用 C# 和 .NET 以原生 Mac、iOS 和 Android API 為目標的工具。 這些工具稱為 Xamarin.Mac、Xamarin.iOS 和 Xamarin.Android,統稱為 Xamarin 平臺。 這些是連結庫和系結,這些連結庫和系結會以 .NET 慣用語表達這些平臺的原生 API。

開發人員可以使用 Xamarin 平臺,在以 Mac、iOS 或 Android 為目標的 C# 中撰寫應用程式。 但是,當以多個平臺為目標時,在目標平臺之間共用部分程式代碼相當有意義。 這牽涉到將程式分成平臺相依程式代碼(通常涉及使用者介面),而平臺獨立程序代碼通常只需要基底 .NET Framework。 此平臺獨立程式代碼可以位於可攜式類別庫 (PCL), 或共用專案,通常稱為共用資產專案或 SAP。

注意

可攜式類別庫已由 .NET Standard 連結庫取代。 書籍中的所有範例程式代碼都已轉換為使用 .NET 標準連結庫。

正在推出 Xamarin.Forms

以多個行動平臺為目標時, Xamarin.Forms 允許更多程式碼共用。 針對 Xamarin.Forms 撰寫的單一程式可以以這些平台為目標:

  • iOS 適用於在 i 電話、iPad 和 iPod touch 上執行的程式
  • Android 適用於在 Android 手機和平板電腦上執行的程式
  • 以 Windows 10 為目標的 通用 Windows 平台

注意

Xamarin.Forms不再支援 Windows 8.1、Windows 電話 8.1 或 Windows 10 行動裝置版,但Xamarin.Forms應用程式會在 Windows 10 桌面上執行。 Mac、WPF、GTK#和 Tizen 平臺也有預覽支援。

大部分 Xamarin.Forms 的程式都存在於連結庫或 SAP 中。 每個平臺都包含呼叫此共用程式碼的小型應用程式存根。

Xamarin.Forms API 會對應至每個平臺上的原生控件,讓每個平台維持其特性外觀和風格:

Triple screenshot of platform visuals sharing

從左至右的螢幕快照顯示 i 電話 和 Android 手機:

在每一個畫面上,頁面都包含 Xamarin.FormsLabel 用於顯示文字的 、 Button 用於起始動作的 、 Switch 用於選擇 on/off 值的 ,以及 Slider 用於指定連續範圍內值的 。 這四個檢視都是 上的 ContentPage子系StackLayout

此外,附加至頁面是包含數ToolbarItem個Xamarin.Forms物件的工具列。 這些會顯示為iOS和Android畫面頂端的圖示,以及Windows 10 行動裝置版畫面底部的圖示。

Xamarin.Forms 也支援 XAML,這是 Microsoft 針對數個應用程式平台開發的可延伸應用程式標記語言。 上述程式的所有視覺效果都是在 XAML 中定義,如 PlatformVisuals 範例所示

程式 Xamarin.Forms 可以判斷它執行的平臺,並據以執行不同的程序代碼。 更強大的是,開發人員可以為各種平臺撰寫自定義程式代碼,並以與平台無關的方式從 Xamarin.Forms 程式執行該程序代碼。 開發人員也可以撰寫每個平台的轉譯器來建立其他控件。

雖然 Xamarin.Forms 是企業營運應用程式、原型設計或快速概念證明示範的絕佳解決方案,但對於需要向量圖形或複雜觸控互動的應用程式來說,它不太理想。

您的開發環境

您的開發環境取決於您想要的目標平臺,以及您想要使用的計算機。

如果您想要以 iOS 為目標,則需要已安裝 Xcode 和 Xamarin 平臺的 Mac。 支援 Android 也需要安裝 Java 和必要的 SDK。 接著,您可以使用 Visual Studio for Mac 將 iOS 和 Android 設為目標。

安裝 Visual Studio 可讓您在以 iOS、Android 和所有 Windows 平臺為目標的電腦上。 不過,從 Visual Studio 以 iOS 為目標仍然需要已安裝 Xcode 和 Xamarin 平臺的 Mac。

您可以在 USB 連線到電腦的實際裝置上,或在模擬器上測試程式。

安裝

在建立和建置 Xamarin.Forms 應用程式之前,您應該嘗試根據您想要的目標平臺和開發環境,分別建立和建置 iOS 應用程式、Android 應用程式和 UWP 應用程式。

Xamarin 和 Microsoft 網站包含如何執行這項操作的資訊:

一旦您可以建立及執行這些個別平臺的專案,就不應該建立和執行 Xamarin.Forms 應用程式。