XAML in Xamarin.Forms 基礎篇 電子書

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

Xamarin.Forms 快速入門 電子書

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

2017/03/20

第一次安裝 Visual Studio 2017 到新的作業系統上

由於 Visual Studio 2017 的安裝過程有持續更新,因此,若想要知道最新的 Visual Studio 2017 for Xamarin 的安裝過程,可以參考 2018 Q2 最新文章 Visual Studio 2017 for Xamarin 開發環境之安裝與設定說明 (2018 Q2 版本)

Visual Studio 2017 於 03/07 正式推出了,不過,這幾天都忙於 Xamarin 的授課,因此,還沒有安裝與使用過 VS2017 正式版的相關功能。
今天,我準備了一台新的作業系統環境,安裝了 VS2017 正式版,並且確認當要您想要一個可以用於 Xamarin.Forms 的開發環境,究竟要勾選那些安裝選項。
我這裡的 Xamarin 開發環境,需要能夠同時針對 Android / iOS / UWP 這三個平台,使用模擬器來進行開發,因此,所要準備的開發設定,將會同時具備這樣的開發能力。

更多關於 Xamarin 跨平台行動開發的相關資訊,可以參考這份 2018年新增的 Xamarin / Xamarin.Forms 行動跨平台 Mobile Cross-Platform 開發學習指引問答集 FAQ 綜合說明文件。

了解更多關於 [Xamarin.Android] 的使用方式
了解更多關於 [Xamarin.iOS] 的使用方式
了解更多關於 [Xamarin.Forms] 的使用方式
了解更多關於 [Hello, Android:快速入門] 的使用方式
了解更多關於 [Hello, iOS – 快速入門] 的使用方式
了解更多關於 [Xamarin.Forms 快速入門] 的使用方式

開始安裝

安裝 VS2017 相當的簡單與容易,下載安裝程式並且啟動之後,經過一段時間,就會出現如下圖的畫面,這個時候,請勾選:

工作負載

  • 通用 Windows 平台開發
    在 通用 Windows 平台開發 的右方,會有這個選項要安裝的明細項目,在這裡,我選擇了:
    • IntelliTrace
    • Windows 10 行動模擬器(Anniversary Edition)
    • Windows 10 SDK 10.0.10586.0
    • 架構與分析工具
  • 使用 .NET 進行行動開發
    在 使用 .NET 進行行動開發 的右方,會有這個選項要安裝的明細項目,在這裡,我選擇了:
    • Xamarin Workbooks
    • Xamarin Profiler
    • Xamarin Remoted Simulator
    • Android NDK (R138)
    • Java SE 開發套件 (8.0.920.14)
    • F# 支援
    • Windows 10 行動模擬器(Anniversary Edition)
    • 適用於 Xamarin 的通用 Windows 平台工具
    • 架構與分析工具
    在這裡,我取消了 Android SDK 安裝程式 (API 層級 23) / Google Android 模擬器 (API 層級 23) / Intel 硬體加入執行管理器(HAXM)

個別元件

當切換到個別元件,我選擇安裝了底下項目

.NET

  • NET 可攜式程式庫目標套件
  • .NET Framework 4.6.1 目標套件
  • .NET Framework 4.6.1 SDK
  • .NET Framework 4.6.2 目標套件
  • .NET Framework 4.6.2 SDK
  • .NET Native

偵錯和測試

  • 分析工具
  • IntelliTrace
  • JavaScript 診斷

程式碼工具

  • 即時相依性驗證
  • 靜態分析工具

開發活動

  • C# 與 Visual Basic
  • F# 語言支援
  • JavaScript 與 TypeScript 語言支援
  • Xamarin
  • Xamarin Profiler
  • Xamarin Remoted Simulator
  • Xamarin Workbooks

雲端、資料庫、伺服器

  • 資料來源與服務參考
  • SQL Server 的 CLR 資料類型
  • SQL Server Express 2016 LocalDB
  • SQL Server Native Client

遊戲開發套件

  • 影像與 3D 模型編輯器

模擬器

  • Android 版 Visual Studio 模擬器
  • Windows 10 行動模擬器 (Anniversary Edition)

編譯器、建置工具和執行階段

  • C# 與 Visual Basic Roslyn 編譯器

Code 工具

  • 程式碼複製品
  • ClickOnce發行
  • Code Map
  • Developer Analytics Tools
  • DGML 編譯器
  • Git for Windows
  • NuGet 封裝管理員
  • Visual Studio GitHub 擴充功能

SQL、程式庫和架構

  • Android NDK (R138)
  • Java SE開發套件 (8.0.920.14)
  • TypeScript 2.1 SDK
  • Windows SDK (10.0.10586.0)
  • Windows SDK (10.0.14393.0)

Android SDK 管理員 設定

Visual Studio 2017 安裝完成後,點選功能表 工具 > Android > Android SDK 管理員
將底下項目安裝到最新版本

Tools 區域

Android SDK tools / Android SDK Platform-toos / Android SDK Build tools (這個項目,僅需要安裝最新版本,其他舊版本可以選擇移除)

每個 Android 版本

接下來會看到每個 Android 支援版本的選項,在這裡建議僅需要安裝 Android 4.4 (API 19)以上的項目。
在每個 Android 版本內,僅需要安裝 SDK Platform 這個項目,而其他的內容,可以移除。

Extras

最後一個項目是 Extras,在這裡,您僅需要安裝 Android Support Repository / Google USB Driver 並且升級到最新版本

進行測試

請點選功能表 檔案 > 新增 > 專案
選擇 Cross-Platform > 跨平台應用程式(Xamarin.Forms或原生)
點選 確定 按鈕
選擇 空白應用程式 > UI 技術 Xamarin.Forms > 程式碼共用策略 可攜式類別庫
接著點選 OK 按鈕
等候 Visual Studio 2017 建立一個 Xamarin 開發用的專案
當出現 新的通用 Windows 專案 ,點選 確定 按鈕
分別設定 Android / iOS / UWP 成為 起始專案,並且建置與在模擬器上跑看看
若沒有遇到問題,則您的 Visual Studio 2017 for Xamarin 開發環境就已經完成了

了解更多關於 [Xamarin.Android] 的使用方式
了解更多關於 [Xamarin.iOS] 的使用方式
了解更多關於 [Xamarin.Forms] 的使用方式
了解更多關於 [Hello, Android:快速入門] 的使用方式
了解更多關於 [Hello, iOS – 快速入門] 的使用方式
了解更多關於 [Xamarin.Forms 快速入門] 的使用方式

關於 Xamarin 在台灣的學習技術資源

歡迎加入 Xamarin 實驗室 粉絲團,在這裡,將會經常性的貼出各種關於 Xamarin / Visual Studio / .NET 的相關消息、文章、技術開發等文件,讓您可以隨時掌握第一手的 Xamarin 方面消息。
歡迎加入 Xamarin.Forms @ Taiwan,這是台灣的 Xamarin User Group,若您有任何關於 Xamarin / Visual Studio / .NET 上的問題,都可以在這裡來與各方高手來進行討論、交流。
Xamarin 實驗室 部落格 是作者本身的部落格,這個部落格將會專注於 Xamarin 之跨平台 (Android / iOS / UWP) 方面的各類開技術探討、研究與分享的文章,最重要的是,它是全繁體中文。
Xamarin.Forms 系列課程 想要快速進入到 Xamarin.Forms 的開發領域,學會各種 Xamarin.Forms 跨平台開發技術,例如:MVVM、Prism、Data Binding、各種 頁面 Page / 版面配置 Layout / 控制項 Control 的用法等等,千萬不要錯過這些 Xamarin.Forms 課程

2017/03/08

Xamarin.Forms 彈出提示 Toast Notification

想要讓您的應用程式,可以顯示 Toast 快顯通知,需要安裝 Toasts.Forms.Plugin NuGet 套件

安裝彈出提示套件的問題

當您將這個套件,安裝到方案內的所有專案的時候,會出現底下錯誤訊息:
無法安裝封裝 'Toasts.Forms.Plugin 3.1.4'。您正嘗試將此封裝安裝到以 '.NETPortable,Version=v4.5,Profile=Profile259' 為目標的專案,但該封裝不包含任何與架構相容的組件參考或內容檔。如需詳細資訊,請連絡封裝作者
這是因為這個套件僅支援到 Profile111,而我們 PCL 專案,使用的 Profile259
因此,我們僅將把這個套件安裝到原生專案內。
底下為安裝成功的紀錄說明。
正在嘗試針對專案 'XFToast.Droid' 及目標 'MonoAndroid,Version=v7.1' 收集封裝 'Toasts.Forms.Plugin.3.1.4' 的相依性資訊
收集相依性資訊花費了 31.35 sec
嘗試解析具有 DependencyBehavior 'Lowest' 之封裝 'Toasts.Forms.Plugin.3.1.4' 的相依性
解析相依性資訊花費了 0 ms
正在解析安裝封裝 'Toasts.Forms.Plugin.3.1.4' 的動作
已解析安裝封裝 'Toasts.Forms.Plugin.3.1.4' 的動作


正在嘗試針對專案 'XFToast.iOS' 及目標 'Xamarin.iOS,Version=v1.0' 收集封裝 'Toasts.Forms.Plugin.3.1.4' 的相依性資訊
收集相依性資訊花費了 1.59 sec
嘗試解析具有 DependencyBehavior 'Lowest' 之封裝 'Toasts.Forms.Plugin.3.1.4' 的相依性
解析相依性資訊花費了 0 ms
正在解析安裝封裝 'Toasts.Forms.Plugin.3.1.4' 的動作
已解析安裝封裝 'Toasts.Forms.Plugin.3.1.4' 的動作
正在還原 'XFToast.UWP' 封裝。
正在還原 D:\Vulcan\GitBook\Temp\XFToast\XFToast\XFToast.UWP\project.json 的封裝...
已成功完成 'XFToast.UWP' 的封裝還原。
正在還原 'XFToast.UWP' 封裝。
正在還原 D:\Vulcan\GitBook\Temp\XFToast\XFToast\XFToast.UWP\project.json 的封裝...
已成功完成 'XFToast.UWP' 的封裝還原。
正在從 'nuget.org' 擷取封裝 'Toasts.Forms.Plugin 3.1.4'。
正在將封裝 'Toasts.Forms.Plugin.3.1.4' 加入資料夾 'D:\Vulcan\GitBook\Temp\XFToast\packages'
已將封裝 'Toasts.Forms.Plugin.3.1.4' 加入資料夾 'D:\Vulcan\GitBook\Temp\XFToast\packages'
已將封裝 'Toasts.Forms.Plugin.3.1.4' 加入 'packages.config'
已成功將 'Toasts.Forms.Plugin 3.1.4' 安裝到 XFToast.Droid
執行 NuGet 動作花費了 2.71 sec
在 'D:\Vulcan\GitBook\Temp\XFToast\packages' 中找到封裝 'Toasts.Forms.Plugin 3.1.4'。
封裝 'Toasts.Forms.Plugin.3.1.4' 已經存在於資料夾 'D:\Vulcan\GitBook\Temp\XFToast\packages'
已將封裝 'Toasts.Forms.Plugin.3.1.4' 加入 'packages.config'
已成功將 'Toasts.Forms.Plugin 3.1.4' 安裝到 XFToast.iOS
執行 NuGet 動作花費了 1.55 sec
Writing lock file to disk. Path: D:\Vulcan\GitBook\Temp\XFToast\XFToast\XFToast.UWP\project.lock.json
正在產生 MSBuild 檔案 XFToast.UWP.nuget.targets。
已成功將 'Toasts.Forms.Plugin 3.1.4' 安裝到 XFToast.UWP
========== 已完成 ==========
經過時間: 00:01:49.5479864
最後,我們需要透過相依性服務與訊息聚合器的幫助,做到從 PCL 專案內,通知原生專案,顯示出所需要的快顯通知。

2017/03/07

從Windows連線到Mac之問題除錯

當使用 Visual Studio 要開發 iOS App的時候,您的 Visual Studio 必須透過 SSH 連線到遠端的 Mac 電腦上,在這篇文章中,將會列出如何進行當 Visual Studio 無法連線到遠端 Mac 電腦上的 Xamarin Studio 的問題除錯方法。

Xamarin 皆要更新到最新版本

  • 請將您的 Windows 電腦上的 Visual Studio 裡面的 Xamarin 更新到最新版本
    功能表 工具 > 選項 > Xamarin > Other
  • 請將您的 Mac 電腦上的 Xamarin Studio & Xcode 也都更新到最新版本
    功能表 Xamarin Studio > Check for Update
請更新穩定版本 Stable 到最新版本,不要使用 Alpha / Beta 版本

Visual Studio 查看連線狀態

當您要進行 Xamarin Mac Agent 連線的時候,您可以切換到 Visual Studio 的 輸出視窗內的 Xamarin 項目,查看連項 log

系統上的 Log 檔案

請在 Visual Studio 點選功能表 說明 > Xamarin > 開啟紀錄
查看這裡面的 Logs 檔案,是否存在有任何錯誤訊息。

確認可以遠連登入到 Mac 電腦上

  • 確認有啟用與允許遠端登入
    系統偏好設定 > 共享 > 勾選 遠端登入 > 設定可以遠端登入的使用者
  • 檢查防火牆設定
    系統偏好設定 > 安全性與隱私 > 防火牆
    若在檢查問題的時候,建議可以先將防火牆關閉,減少問題檢查數量。
  • 確認您已經登入到 Mac 電腦上
    請登入到 Mac 電腦,並且試著開啟 Xamarin Studio / Xcode,看看能否正常啟動
  • 檢查您 Mac 電腦上的
    系統偏好設定 > 共享 > 遠端登入

在 Windows 電腦上來檢測

  • 使用 ping 確認 ICMP 通訊協定可以通
  • 使用 SSH 用戶端或程式,檢視是否可以遠端登入到 Mac 電腦上
    指明使用 SSH ( 22 Port )
    若是第一次連線過去,請確認有收到 Mac 電腦上的加密指紋 (fingerprint)
    輸入帳號與密碼,並且可以下來相關指令,來操作遠端 Mac 電腦
    若在這個階段發生問題,請在 Mac 電腦上,開啟終端機,輸入這個指令,確認可以進行本機的 SSH 連線與登入。

清除 Mac 電腦上的相關 IDB, Broker, Designer Agents

有些時候,從 Logs 檔案中看到一些 Installing / Uploading / Starting 的步驟中,發生一些問題,請執行底下步驟,刪除 Mac 電腦上的 Xamarin Mac Agent 檔案。
  • 在終端機中,輸入 open "$HOME/Library/Caches/Xamarin"
  • 刪除 XMA 的資料夾
  • 刪除 mtbs 的資料夾
  • 接著,中斷 Visual Studio 的 Xamarin Mac Agent 連線
  • 從新進行 Xamarin Mac Agent 連線
  • 此時,Visual Studio 會重新進行連線,並且更新 Mac 電腦上的相關檔案,詳細 Log 如下:
正在嘗試連線到 Mac 192.168.31.14...
正在啟動連接埠 52551 上的訊息代理程式 4.3.0.784...
已成功建立 Mac 192.168.31.14:52551 的連線
正在啟動 Mac 192.168.31.14 (192.168.31.14) 上的代理程式
正在啟動代理程式 IDB 4.3.0.784...
正在啟動代理程式 Build 4.3.0.784...
正在啟動代理程式 Designer 4.3.0.784...
代理程式 Build 4.3.0.784 正在執行
代理程式 IDB 4.3.0.784 正在執行
代理程式 Designer 4.3.0.784 正在執行
已連線到可提供完整支援的 Mac 192.168.31.14 (192.168.31.14)。
已中斷與 Mac 192.168.31.14 (192.168.31.14) 的連線
正在嘗試連線到 Mac 192.168.31.14...
正在安裝訊息代理程式 4.3.0.784...
正在上傳 Broker 4.3.0.784 (160/1592 KB) 10%...
正在上傳 Broker 4.3.0.784 (320/1592 KB) 20%...
正在上傳 Broker 4.3.0.784 (480/1592 KB) 30%...
正在上傳 Broker 4.3.0.784 (640/1592 KB) 40%...
正在上傳 Broker 4.3.0.784 (800/1592 KB) 50%...
正在上傳 Broker 4.3.0.784 (960/1592 KB) 60%...
正在上傳 Broker 4.3.0.784 (1120/1592 KB) 70%...
正在上傳 Broker 4.3.0.784 (1280/1592 KB) 80%...
正在上傳 Broker 4.3.0.784 (1440/1592 KB) 90%...
已上傳 Broker 4.3.0.784 100%
正在啟動連接埠 58651 上的訊息代理程式 4.3.0.784...
已成功建立 Mac 192.168.31.14:58651 的連線
正在啟動 Mac 192.168.31.14 (192.168.31.14) 上的代理程式
正在安裝代理程式 IDB 4.3.0.784...
正在上傳 IDB 4.3.0.784 (592/5775 KB) 10%...
正在安裝代理程式 Build 4.3.0.784...
正在上傳 IDB 4.3.0.784 (1168/5775 KB) 20%...
正在安裝代理程式 Designer 4.3.0.784...
正在上傳 Build 4.3.0.784 (192/1847 KB) 10%...
正在上傳 Build 4.3.0.784 (384/1847 KB) 20%...
正在上傳 Build 4.3.0.784 (560/1847 KB) 30%...
正在上傳 IDB 4.3.0.784 (1744/5775 KB) 30%...
正在上傳 Build 4.3.0.784 (752/1847 KB) 40%...
正在上傳 Build 4.3.0.784 (928/1847 KB) 50%...
正在上傳 Build 4.3.0.784 (1120/1847 KB) 60%...
正在上傳 IDB 4.3.0.784 (2320/5775 KB) 40%...
正在上傳 Build 4.3.0.784 (1296/1847 KB) 70%...
正在上傳 Build 4.3.0.784 (1488/1847 KB) 80%...
正在上傳 IDB 4.3.0.784 (2896/5775 KB) 50%...
正在上傳 Build 4.3.0.784 (1664/1847 KB) 90%...
已上傳 Build 4.3.0.784 100%
正在上傳 IDB 4.3.0.784 (3472/5775 KB) 60%...
正在上傳 IDB 4.3.0.784 (4048/5775 KB) 70%...
正在上傳 IDB 4.3.0.784 (4624/5775 KB) 80%...
正在上傳 IDB 4.3.0.784 (5200/5775 KB) 90%...
正在啟動代理程式 Build 4.3.0.784...
已上傳 IDB 4.3.0.784 100%
正在上傳 Designer 4.3.0.784 (6416/64013 KB) 10%...
正在啟動代理程式 IDB 4.3.0.784...
代理程式 Build 4.3.0.784 正在執行
正在上傳 Designer 4.3.0.784 (12816/64013 KB) 20%...
正在上傳 Designer 4.3.0.784 (19216/64013 KB) 30%...
正在上傳 Designer 4.3.0.784 (25616/64013 KB) 40%...
正在上傳 Designer 4.3.0.784 (32016/64013 KB) 50%...
代理程式 IDB 4.3.0.784 正在執行
正在上傳 Designer 4.3.0.784 (38416/64013 KB) 60%...
正在上傳 Designer 4.3.0.784 (44816/64013 KB) 70%...
正在上傳 Designer 4.3.0.784 (51216/64013 KB) 80%...
正在上傳 Designer 4.3.0.784 (57616/64013 KB) 90%...
已上傳 Designer 4.3.0.784 100%
正在啟動代理程式 Designer 4.3.0.784...
代理程式 Designer 4.3.0.784 正在執行
已連線到可提供完整支援的 Mac 192.168.31.14 (192.168.31.14)。