XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2017/05/14

跨平台App開發的UX/UI 設計時候的設計畫素與實際畫素

在這篇文章中,我們將要來研究如何設計頁面各 UI 的尺寸與定位位置的方法。
這篇文章中所用到的範例專案,可以從 https://github.com/vulcanlee/xamarin-forms-develop-notes-example/tree/master/XFMeasureScreen 取得
在我們進行頁面UI視覺設計的時候,各種控制項在有些情況下,不是透過版面配置 (Layout) 來計算訂出所需要的寬度與高度,而是要由我們自己來訂出所需要的寬度與高度;可是,不論是甚麼平台的手機,都存在著不同尺寸的手機,例如:4.7" / 5" / 5.2" / 5.5" / 5.9" / 6.4" 等等,而同一種尺寸的手機也會有著 16:9 / 16:10 等不同比例尺寸,另外同一種尺寸的手機有會存在著不同解析度 1080x1920 / 720x1280 / 750x1334 等等,也就是說,在手機螢幕上,可以顯示出來的全部畫素數量。
因此,再進行手機畫面 UI/UX 設計的時候,將會顯得更加複雜,不過,在各個手機平台中,我們進行 UI/UX 設計的時候,用來定義控制項的尺寸,都是使用與視覺無關的畫素來進行設計,不同種類的手機,都會定義出他的放大比率;所以;在最後要將控制項顯示在手機螢幕上的時候,會將您指定的與裝置無關的畫素 乘以 放大倍率,就會得到最終控制項的真實會用到的寬度與高度的畫素大小。
在底下,我們指定一個矩形 BoxView 控制項,他的寬度與高度分別是 200x50 (單位是與裝置無關的畫素),若我們將 App 執行在具有三倍放大倍率的手機上,這個時候,這個 BoxView 控制項,將會以 600x150 (單位是 Pixel 畫素)來顯示在手機螢幕上。
        <BoxView x:Name="boxview" WidthRequest="200" HeightRequest="50" Color="Red"
                 HorizontalOptions="Start" VerticalOptions="Start"/>
不過,對於圖片來說,就無法使用這樣的方式來處理,我們需要在開發過程中,提供同一個圖片,但是擁有不同放大倍率大小的圖片檔案到 Visual Studio 專案內。在這個測試專案中,我們在每個平台專案內( Android / iOS / UWP ) 分別提供了不同放大倍率的圖片。
因此,當應用程式在不同放大倍率的手機上執行的時候,系統會自動依據放大倍率的大小,並且參考這個 App 內提供同一個圖片但是不同放大倍率的圖片,選擇出一個最適合的圖片來(這裡,我們並不需要做任何人為控制)。
但是,要提供同一個圖片,但是具有不同放大倍率的圖片檔案,每個平台的做法都不太一樣,有些是使用目錄名稱來區分,有些是依據檔案的特殊命名規則來區分,有些是兩者都可以;這部分的定義,請您去了解不同平台的 UX 設計規範文件,裡面將會有相當詳細的說明。
下圖是加入到 UWP 專案內的同一個圖片,但是具有不同的放大倍率;為了要能夠區分出不同放大倍率的圖片,我們使用了不同的顏色作為代表,這樣,當我們要進行測試的時候,就會知道當時所顯示的圖片,是採用放大幾倍的圖片。
在下圖中,從最左邊往右分別是
  • 1倍圖片(藍色) : 50x50
  • 1.5倍圖片(藍色) : 75x75
  • 2倍圖片(藍色) : 100x100
  • 3倍圖片(藍色) : 150x150
  • 4圖片(藍色) : 200x200
Facebook

取得手機螢幕的使用實際畫素與設計畫素大小

每個平台都有專屬的 API 可以讓您做到這樣的事情,另外,也可以得到這支手機的設計尺寸放大倍率值,底下分別針對三個平台說明如何使用這些 API 的作法。
一旦專屬平台下取得了螢幕實際畫素與設計畫素大小和放大倍率,就會寫入到核心 PCL 專案內的支援類別 AppGlobal 內的相關靜態屬性之中;之後,在 XAML 就會透過 x:Static 延伸標記,將這些值顯示在螢幕上。
    public static class AppGlobal
    {
        #region 這裡定義從原生那裏取得的螢幕尺寸與縮放比
        /// <summary>
        /// 這個裝置的螢幕寬度的設計畫素
        /// </summary>
        public static double DisplayScreenWidth = 0f;
        /// <summary>
        /// 這個裝置的螢幕高度的設計畫素
        /// </summary>
        public static double DisplayScreenHeight = 0f;
        /// <summary>
        /// 這個裝置的設計尺寸縮放比
        /// </summary>
        public static double DisplayScaleFactor = 0f;
        /// <summary>
        /// 這個裝置的螢幕寬度的實際畫素
        /// </summary>
        public static double PhysicalDisplayScreenWidth = 0f;
        /// <summary>
        /// 這個裝置的螢幕高度的實際畫素
        /// </summary>
        public static double PhysicalDisplayScreenHeight = 0f;
        #endregion

    }

Android

在 Android 平台下,請在 MainActivity 內加入這些程式碼。
            #region 取得當時螢幕的相關尺寸

            // 取得當時應用程式視窗的設計尺寸
            AppGlobal.DisplayScreenWidth = (double)Resources.DisplayMetrics.WidthPixels / (double)Resources.DisplayMetrics.Density;
            AppGlobal.DisplayScreenHeight = (double)Resources.DisplayMetrics.HeightPixels / (double)Resources.DisplayMetrics.Density;

            // 取得縮放比率
            AppGlobal.DisplayScaleFactor = (double)Resources.DisplayMetrics.Density;

            // 取得當時應用程式視窗的實際畫素
            AppGlobal.PhysicalDisplayScreenWidth = (double)Resources.DisplayMetrics.WidthPixels;
            AppGlobal.PhysicalDisplayScreenHeight = (double)Resources.DisplayMetrics.HeightPixels;
            #endregion

iOS

在 iOS 平台下,請在 AppDelegate.FinishedLaunching 內加入這些程式碼。
            #region 取得當時螢幕的相關尺寸

            // 取得當時應用程式視窗的設計尺寸
            AppGlobal.DisplayScreenWidth = (double)UIScreen.MainScreen.Bounds.Size.Width;
            AppGlobal.DisplayScreenHeight = (double)UIScreen.MainScreen.Bounds.Size.Height;

            // 取得縮放比率
            AppGlobal.DisplayScaleFactor = (double)UIScreen.MainScreen.Scale;

            // 取得當時應用程式視窗的實際畫素
            AppGlobal.PhysicalDisplayScreenWidth = (double)UIScreen.MainScreen.Bounds.Size.Width* AppGlobal.DisplayScaleFactor;
            AppGlobal.PhysicalDisplayScreenHeight = (double)UIScreen.MainScreen.Bounds.Size.Height* AppGlobal.DisplayScaleFactor;
            #endregion

UWP

在 UWP 平台下,請在 App.OnLaunched 內加入這些程式碼。
                #region 取得當時螢幕的相關尺寸

                // 取得當時應用程式視窗的設計尺寸
                AppGlobal.DisplayScreenHeight = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds.Height;
                AppGlobal.DisplayScreenWidth = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds.Width;

                // 取得縮放比率
                AppGlobal.DisplayScaleFactor = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;

                // 取得當時應用程式視窗的實際畫素
                AppGlobal.PhysicalDisplayScreenHeight = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().ScreenHeightInRawPixels;
                AppGlobal.PhysicalDisplayScreenWidth = Windows.Graphics.Display.DisplayInformation.GetForCurrentView().ScreenWidthInRawPixels;
                #endregion

在不同平台,不同手機下,測試取得設計與實際畫素和縮放比率

我們將會使用最初提到的測試專案,分別在 UWP / Android / iOS 平台的不同放大比率模擬器中,看看執行的結果。在每個手機下,將會分別擷取三個螢幕畫面,這分別是單純的 ContentPage 下的相關畫素、NavigationPage 下的相關畫素、導航抽屜的抽屜面板的寬度相關畫素。
您也可使用這個範例專案,在不同的裝置下來執行,看看所跑出來的結果為何?

UWP Windows 10 Mobile 裝置一

這個裝置的解析度為 1080x1920
放大率為 2.5
整個螢幕的設計畫素為 432x744
圖片部分,使用的 3 倍的圖片(綠色)
因為沒有2.5倍的圖片,因此,系統會使用較高放大倍率的圖片,再透過縮小演算法,將圖片縮小成為 2.5倍的圖片
UWP Windows 10 Mobile
底下螢幕截圖是在 NavigationPage 下的執行結果,您可以但到,在導航頁面中的可用 ContentPage 空間明顯變小了許多,因為,最上方有導航工具列佔據了。
UWP Windows 10 Mobile
當推出了導航抽屜面板,我們可以看到抽屜面板的寬度為 320 設計畫素
UWP Windows 10 Mobile

UWP Windows 10 Mobile 裝置二

這個裝置的解析度為 720x1280
放大率為 2
整個螢幕的設計畫素為 360x616
圖片部分,使用的 2 倍的圖片(橘色)
UWP Windows 10 Mobile
底下螢幕截圖是在 NavigationPage 下的執行結果,您可以但到,在導航頁面中的可用 ContentPage 空間明顯變小了許多,因為,最上方有導航工具列佔據了。
UWP Windows 10 Mobile
當推出了導航抽屜面板,我們可以看到抽屜面板的寬度為 320 設計畫素
UWP Windows 10 Mobile

Android 裝置一

這個裝置的解析度為 1080x1793
因為 Android系統最下方有實體按鍵區域佔據了一部分螢幕可用空間
放大率為 2.65
整個螢幕的設計畫素為 407x676
圖片部分,使用的 3 倍的圖片(綠色)
Android UX/UI
底下螢幕截圖是在 NavigationPage 下的執行結果,您可以但到,在導航頁面中的可用 ContentPage 空間明顯變小了許多,因為,最上方有導航工具列佔據了。
Android UX/UI
當推出了導航抽屜面板,我們可以看到抽屜面板的寬度為 343 設計畫素
Android UX/UI

Android 裝置二

這個裝置的解析度為 480x738
因為 Android系統最下方有實體按鍵區域佔據了一部分螢幕可用空間
放大率為 1.29
整個螢幕的設計畫素為 371x570
圖片部分,使用的 1.5 倍的圖片(紫色)
Android UX/UI
底下螢幕截圖是在 NavigationPage 下的執行結果,您可以但到,在導航頁面中的可用 ContentPage 空間明顯變小了許多,因為,最上方有導航工具列佔據了。
Android UX/UI
當推出了導航抽屜面板,我們可以看到抽屜面板的寬度為 306.8 設計畫素
Android UX/UI

iPhone 6+

這個裝置的解析度為 1242x2208
放大率為 3
整個螢幕的設計畫素為 414x736
圖片部分,使用的 3 倍的圖片(綠色)
iOS UX/UI
底下螢幕截圖是在 NavigationPage 下的執行結果,您可以但到,在導航頁面中的可用 ContentPage 空間明顯變小了許多,因為,最上方有導航工具列佔據了。
iOS UX/UI
當推出了導航抽屜面板,我們可以看到抽屜面板的寬度為 331 設計畫素
iOS UX/UI

iPhone 6

這個裝置的解析度為 750x1334
放大率為 2
整個螢幕的設計畫素為 375x667
圖片部分,使用的 2 倍的圖片(橘色)
iOS UX/UI
底下螢幕截圖是在 NavigationPage 下的執行結果,您可以但到,在導航頁面中的可用 ContentPage 空間明顯變小了許多,因為,最上方有導航工具列佔據了。
iOS UX/UI
當推出了導航抽屜面板,我們可以看到抽屜面板的寬度為 300 設計畫素
iOS UX/UI

2017/05/07

Visual Studio 2017 / Xamarin 企業級行動化開發平台環境建置問題排除指引


Xamarin Toolkit 可以讓 .NET 開發者,使用 C# 程式語言,開發出跨平台,Android / iOS / UWP 的行動應用程式,您可以選擇使用 Visual Studio 2017 (在 Windows 平台下) 或者 Visual Studio 2017 for Mac (在 Mac OSX 平台下) IDE 來開發這類跨平台專案。
Xamarin Toolkit 提供您兩種方式來開發跨平台應用程式,第一個選擇是建立 Xamarin.Android / Xamarin.iOS / UWP 專案,但是,您需要分別設計各平台應用程式所需要用到的 UI,不過,這些專案可以共享商業處理邏輯程式碼;第二個選擇,則是選擇使用 Xamarin.Forms (這是一個 Xamarin UI Toolkit) ,讓所有平台應用程式都共用同一個 UI 設計,並且同樣的也可以共享商業處理邏輯。
不管您選擇哪種方式來進行跨平台專案開發,於許多對於想採用 Xamarin Toolkit / .NET C# 進行跨平台應用程式開發的朋友,絕大多數的人在進行開發環境的安裝與設定時候,都會遇到許多不同的問題與狀況,最終結果就是,您的電腦無法順利進行 Xamarin 專案開發 (陣亡了),這些問題包含了:無法建立 Xamarin 專案、專案建置會有錯誤、無法與裝置或模擬器連線進行除錯、模擬器無法開啟或者一除錯就App閃退、無法連線到Mac電腦等等。
因此,在這篇筆記中,將會告訴想要使用 Visual Studio 2017 + Xamarin 這樣的組合,進行跨平台開發的人,您該要如何這些開發工具的進行相關安裝與設定的說明,並且指出當遇到不同問題的時候,您可以參考的相關文章或解法說明。
作者為了幫助有心想要使用 Xamarin 開發跨平台作業的同好,特別製作此一文件與安裝/設定的教學影片,藉由這文件與影片,讓您可以快速、正確無誤地準備好 Xamarin 的開發環境。
在這裡,我們將會假設您需要開發的跨平台開發環境將會有 Android / iOS / UWP ,因此,您將會需要兩台電腦,一台是 PC,一台是 Mac。
您也可以參考 Xamarin 官方的需求說明 的文件。

需求說明

想要能夠使用 Xamarin 順利開發出跨平台的應用程式,第一個步驟,就是要準備好您的開發環境要使用的軟體與硬體,請您參考底下說明內容。

電腦軟硬體

您需要準備兩種電腦: Windwos 10 / Mac osX 這兩個作業系統
請注意,您的電腦記憶體與可用硬碟空間,必須要足夠;當空間不足的時候,會發生許多莫名奇怪的訊息與狀況。
Visual Studio Emulator for Android 模擬器若要能夠上網,您的開發環境,必須要有 DHCP 動態 IP 配置服務,否則,Android 模擬器,是無法上網的。
另外,當您在安裝 Visual Studio 2017 / Xcode / Visual Studio 2017 for Mac 的時候,請要在網路頻寬足夠與速度快的網路環境下安裝,會比較順利。
若有更多這方面的問題,請參考 Visual Studio Emulator for Android 的系統需求
當然,CPU也是滿重要的,較低階的 CPU,當然會造成建置與開發過程較慢的情況發生。
最後,記憶體也是十分重要的,請不要使用較少的記憶體電腦,作為您的開發電腦。

Windows 10 作業系統

您需要一台 PC / 筆電,在這台電腦上安裝 Visual Studio 2017 IDE 與 相關平台的開發用的 SDK 軟體。
  • 在 Windows 作業系統中,您需要至少 Windows 10 專業版以上的作業系統
  • 請將您安裝的作業系統,更新到最新的 Windows Update
若您的電腦本身是 Windows 10 Home 版本,請不要使用變更到專業版金鑰、升級到 Windows 10 專業版的方式來升級您的 Windows 10 Home 作業系統,因為,您那樣做的話,升級起來的作業系統,也是無法使用 Hyper-V 服務的。
正確的做法,請使用 Windows 10 專業版,重新安裝的作業系統

Mac OSX 作業系統

您需要一台 Mac,在這台電腦上安裝 Visual Studio 2017 for Mac 與 iOS開發用的 SDK 軟體,Xcode。
  • 請升級您的 Mac OSX 到 OSX 10.12 (Sierra) 或者更新的版本
  • 請在這台 Mac 電腦上安裝到最新版本的 Xcode 8.3 (Xcode 8.3 是作者現在撰寫這篇文章的時候,最新的 Xcode 版本,若有更新版本的 Xcode,就請安裝它)
  • 請在這台 Mac 電腦上安裝 Visual Studio 2017 for Mac,並且更新到最新軟體修正
為什麼我需要一台 Mac 電腦呢? 那是因為您需要開發出 iOS App,Xamarin.iOS 需要透過 Mac 電腦上面的 Visual Studio 2017 for Mac / xCode 來建立出 iOS 的發行套件以及使用 iOS Simulator。
若您沒有 Mac 電腦,而想要體驗 iOS 開發過程,您可以選擇三種雲端 Mac 主機服務;作者本身是有在使用 MacInCloud 這個雲端服務產品,您將使用 Windwos 的遠端桌面程式,連線到 MacInCloud 上的 Mac 電腦;在這台 Mac 電腦上,已經幫您安裝好了 Visual Studio 2017 for Mac / Xcode 開發工具。
作者本身有在使用 MacInCloud,您可以參考這篇文章 Xamarin.iOS 使用遠端 MacInCloud 服務,進行 iOS 應用程式除錯,自行購買適合您的 MacInCloud 服務。

安裝前準備工作

為了讓之後的安裝過程較為順利,請先調整您的作業系統環境設定

Windows 10 作業系統

請先將 Hyper-V 服務,安裝到您的作業系統
首先,您的電腦必須要能夠支援 Hyper-V 這樣的功能,您可以參考個文章與影片:Enable Hardware settings in BIOS to run Hyper V / Configure BIOS Before Installing Windows Server and Hyper-V
硬體支援了並且 BIOS 也設定好了,可以參考這篇文章,將您 Windows 10 專業以上版本的作業系統,啟動 Hyper-V 服務:在 Windows 10 上安裝 Hyper-V
若您在啟用 Hyper-V 服務的時候,沒有看到如下圖的 Hyper-V 平台 / Hyper-V 管理工具 這兩個選項,那很可能是您的電腦並沒有啟用硬體支援 Hyper-V,或者您的電腦本身就無法使用 Hyper-V (這個時候,建議您可以換一台電腦了)。
Hyper-V
若您準備的作業系統環境就是一個 Hyper-V VM,您可以使用 在巢狀虛擬化的虛擬機器中執行 Hyper-V 這項功能,讓您 Hyper-V 的 VM,還可以使用 Hyper-V VM。
現階段 Azure VM 尚未支援巢狀 Hyper-V 功能,因此,不建議您使用 Azure VM 來當作您的 Xamarin 開發環境
您若真的想要使用 VM 來練習 Xamarin 開發,您可以參考這篇文章 在巢狀虛擬化的虛擬機器中執行 Hyper-V 上面所提到有支援巢狀虛擬化VM的作業系統版本。
為什麼一定要使用 Hyper-V 服務呢?若您要選擇一個不使用 Hyper-V 的安裝環境與過程,也是可行的;在 UWP 開發環境中,您需要使用實體裝置做為開發與測試的對象、對於 Android 環境下,您可以選擇其他 Android 模擬器(不使用 Hyper-V或者原生 SDK所附上的),或者使用實體裝置做為開發與測試對象。
若您是要參加作者所開的 Xamarin.Forms 教育訓練課程,請您務必要準備一台有支援 Hyper-V 的電腦硬體,並且要先安裝好 Hyper-V 服務。
由於您電腦的 CPU 同一個時間,只能夠支援一個虛擬化技術,虛擬化技術主要有三種:
  • Hyper-V
    供 Visual Studio Emulator for Android 和 Windows 10 Mobile 模擬器使用
  • Virtual Box
    供適用於 Android 和 Genymotion 的 Xamarin Player 使用)
  • Intel HAXM
    供 Android SDK 模擬器使用
若您要選擇最適合您的虛擬化技術,請確認您的使用的模擬器可以正常運作與透過 Visual Studio 來進行開發與除錯;若您尚未接觸與用過上述的技術,建議您可以先使用 Hyper-V 虛擬化技術。

Mac 電腦與 OSX

有些人想要只使用一台 Mac 電腦,同時安裝 Windows 10 專業版與 OSX 作業系統,這個時候,您 Mac 電腦上的 Parallel 需要啟動巢狀 Hyper-V 支援,您可以參考這篇文章:Nested Hyper-V support in Parallels Desktop virtual machines
另外,請參考 啟用遠端登入 這篇文章,啟用您的 Mac 電腦,允許遠端登入能力,最後能在 Windows 電腦上,測試是否可以從 Windows 電腦上來遠端登入到 Mac 電腦。

進行安裝開發環境

若您的電腦主機與作業系統,都已經準備妥當,接下來,就可以在 Windows 10 專業版電腦上開始安裝 Visual Studio 2017 IDE 了
問題1: 為什麼我要安裝 Visual Studio 2017,難道,不能夠使用 Visual Studio 2015 嗎?
當然可以呀,不過,在這篇文章將會以如何安裝與設定 Visual Studio 2017 ,若您想要使用 Visual Studio 2015,強烈建議您自行上網找相關安裝/設定說明文件。
問題2: 我要安裝哪個版本的 Visual Studio 2017 呢?
若您是想要使用 Xamarin開發出跨平台的應用程式,Visual Studio Enterprise 2017 / Visual Studio Professional 2017 / Visual Studio Community 2017 這三個版本都可以喔,不過,Visual Studio 2107 Enterprise 版本內提供了更多好用的 Xamarin 支援工具。
想要了解不同 Visual Studio 2107 之間的差異,可以參考這篇文章:比較不同 Visual Studio 2017 版本的差異
請先觀看完成這部安裝教學影片 [Visual Studio 2017 安裝與設定完整過程之教學影片][Xamarin 企業級行動化開發平台環境建置攻略 - Visual Studio 2017 安裝與設定]
當然,強烈建議一併參考這份文件 Xamarin 企業級行動化開發平台環境建置攻略 ( 全新 Visual Studio 2017 版 ) ,這裡有列出在進行安裝 Visual Studio 2017 過程中,您所需要選擇安裝的元件清單。
若您不去觀看這部教學影片與這份建置攻略文件,而是自己安裝 Visual Studio 2017,都使用預設安裝模式,沒有特別去選擇適合的安裝元件;若之後有遇到問題,請自行上網尋找相關解決方案。

安裝後的修正與調教

當您的 Visual Studio 2017 安裝完成之後,請務必要進行底下的各種調教工作,之後也需要建立跨平台專案,實際在各平台下來執行,確認這些開發環境可以正常運作。

Android SDK 管理員

這個部分相當的重要,若您沒有做這部分的調教,您的 Android 專案,在建立、建置、除錯的時候,將會遇到問題。
安裝完成之後,請記得首先工作,就是要進行 Android SDK Manager 工具的調教,這部分要進行的工作,可以參考上面的安裝教學影片中 14:15 處開始說明的內容;或者您可以參考上面文件中的 Android SDK 管理員 章節內容。
Android SDK 管理員需要安裝底下項目,必且升級到最新版本
  • Tools > Android SDK Tools
  • Tools > Android SDK Platform-tools
  • Tools > Android SDK Build-tools (Rev.25.0.2)
  • Extras > Android Support Repository
  • Extras > Google USB Driver
  • 您所想要的 Android (版本) (API 編號) 內的 SDK Platform 項目
詳細操作步驟與要安裝與刪除的項目的過程,請觀看影片上的內容。
請特別注意,若您在這個設定步驟沒有如實操作,在之後的應用程式建立與開發上,將會遇到一些莫名奇怪的訊息。

建立 Visual Studio Emulator for Android 模擬器

接下來,您需要安裝與設定 Visual Studio Emulator for Android 模擬器,這部分的過程,可以參考上述安裝教學影片中的 20:42 處開始說明的內容。
當您在操作Visual Studio Emulator for Android 模擬器的過程中,會遇到這些情況:無法啟動、無法除錯、找不到模擬器、無法安裝APK、Hyper-V CPU 相容性問題、與其他虛擬化服務共用等相關問題,這個時候,您可以參考這份文件:Visual Studio Emulator for Android 疑難排解
最常遇到的情況有一個,那就是當您的電腦是筆記型電腦,有可能遇到當要進行除錯的時候,所開發的應用程式已經佈署到模擬器上,可是,應用程式一顯示之後,立即閃退了,這個時候,請參考這篇文章來進行修正: Visual Studio for Android Emulator Hyper-V CPU 相容性問題
一旦您設定 Android 平台專案為起始專案,卻看不到您所需要的模擬器,這個時候,您需要檢查您的 Android 專案下的 Properties 的內容,應用程式 > 目標的最低 Android 設定為 `Android 4.4 (API 層級 19 - Kit Kat),這樣就可以看到了
若您的模擬器啟動之後,無法連上 Internet 網路,請檢查您的網路環境是否有建置 DHCP 的網路設備。
究竟要使用模擬器或者實體裝置來進行跨平台應用程式開發,所謂,青菜蘿蔔各有所好,您可以依據您的需要自行選擇。作者本身大部分時間習慣使用模擬器來進行專案開發,除非有某些應用,是模擬器不支援的情況下,那個時候,才會臨時使用實體裝置來進行開發。

Windows 10 Mobile 模擬器

由於 Windows 10 Mobile 模擬器沒有類似 Android 那樣的工具,可以由一個獨立程式來啟動,您需要透過 Visual Studio 來進行除錯,選擇適當的模擬器來執行,這樣模擬器才會跑起來。

確認開發環境可以正常運作

最後,是最重要的過程,您需要檢查您的 Visual Studio 2017 開發環境,是可以真正的進行 Xamarin 專案的建立、建置、除錯、執行等相關開發工作。這部分要進行的工作,可以參考上面的安裝教學影片中 24:15 處開始說明的內容。
請務必要能夠產生出 Xamarin.Forms 專案,之後要依序建置與執行這些平台的專案 Android / UWP / iOS 這三個類型的專案,確定您的 Visual Studio 2017 是可以進行跨平台專案開發。
若想要參加作者所開設的 Xamarin.Forms 教學課程,請務必要將您的電腦的相關安裝與設定都完成,並且已經完成確認開發環境可以正常運作工作;若有遇到任何問題,請到課程上指定的社團上來發問。

iOS 開發環境注意事項

若您要進行 iOS 專案的開發,您需要一台 Mac 電腦,這台 Mac 電腦上需要安裝 Xcode 8.3 / Visual Studio 2017 for Mac 到最新版本,這部分的資訊,在這篇文章前面已經提過了。
在安裝教學影片中 40:15 處開始說明的內容,就是在說明如何進行與 Mac 電腦連線的設定過程。
若您在進行 Windows 電腦與 Mac 電腦連線上發生了問題,可以參考這篇文章來嘗試找出問題:從Windows連線到Mac之問題除錯
若您發生了 Windows 電腦無法透過 Xamarin Mac Agent 連上 Mac 電腦,您可以嘗試將 Visual Studio 2017 中的 ReSharp 或者 OzCode 這兩個套件先停用,看看是否可以正常連線。

其他提高生產力工具

在這份影片中,[Xamarin 企業級行動化開發平台環境建置攻略 - 提升 Xamarin Forms 開發生產力][Xamarin 企業級行動化開發平台環境建置攻略 - 提升 Xamarin Forms 開發生產力] ,告訴您如何安裝 Prism Template Pack 與可以增加程式開發效能的程式碼片段。您可以參考這份影片來進行安裝與設定這兩個工具。
若您是參加作者的Xamarin.Forms 教學課程,整個課程,將會使用 MVVM 開發方式、Prism 開發框架與作者自製的程式碼片段,讓上課學員了解到整個 Xamarin.Forms 應用程式的開發過程與相關功能和特色。
當然,您也可以選擇不去安裝這兩個工具,採用 Xamarin.Forms 內建的 Code Behind 開發方法;所謂,青菜蘿蔔各有所好,您採用甚麼方式開發 Xamarin.Forms 都是一個選擇,不過,作者偏好 MVVM + Prism 開發方式並且會採用這種開發方法來進行教學。

其他說明

隨時確保最新的軟體版本

在您使用 Visual Studio 開發過程中,請務必隨時確保您的 Windows / Mac 電腦上的相關 Xamarin Toolkit 與各平台的 SDK 保持在最新版本的狀態下。
在 Visual Studio 2017 中,Xamarin Toolkit 的升級,已經整合到了 Visual Studio 2017 內,也就是說,當您升級 Visual Studio 2017 的同時,您的 Xamarin 也會一併升級了(如果此時有新版本推出的話)。

Android / iOS 要使用實機來進行開發與除錯

若您開發 Android 專案,想要使用 Android 實體裝置來進行開發與除錯,您首先需要一隻 Android 手機,接著,您需要在這支手機上,啟用開發人員模式;不過,不同品牌與型號的手機,對於要啟用開發人員模式的過程都不盡相同,因此,您可以上網查詢您的手機要如何啟用開發人員模式。接著,將您的手機接到電腦上,在手機上,點選允許除錯,此時,您就可以在 Visual Studio (當然,您需要設定 Android 專案為起始專案)的除錯裝置為這支手機,這樣,就可以在這支手機上進行開發與除錯了。
至於,想要使用 iPhone 手機來進行開發與除錯,首先,您需要建立一個 Provisioning Profile,您可以參考 Xamarin.Forms iOS發佈之Mac端的操作 這篇文章,這樣,您就可以在 iPhone 手機上進行開發除錯了。

有甚麼不錯的 Xamarin.Forms 教學文件

Xamarin 官方的Xamarin.Forms 入門網頁,是個絕佳的選擇。