Connect(); 2016

第 31 卷,第 12 期

本文章是由機器翻譯。

Connect(); 行動 DevOps - 探索 Visual Studio Mobile Center

Thomas Dohmke;2016

行動裝置現在是技術生態系統的中央位置。許多人認為他們無法未其電話、 平板電腦和膝上型電腦,並利用它們來組織其個人和專業生活資訊。商業世界反應,和每個公司現在彎曲本身轉換成行動商業上。若要成功及蓬勃發展,公司必須支援不只一個行動裝置應用程式,但多個應用程式行動的策略。這都要呼叫的現代商務 appification — 針對特定的使用者群組或特定工作而設計的目標、 高度最佳化應用程式的激增。在 appified 世界中,開發小組必須執行這些應用程式的行動平台持續不斷發展而仍在持續增加的裝置數目,為客戶,提供更多的應用程式使用多個值。超過 1 億個裝置上安裝的最大的應用程式有數千個準則,例如螢幕大小、 語言、 地區設定或網路提供者為基礎的裝置組態。

若要應付這些挑戰,Microsoft 提供三個核心為基礎的端對端解決方案︰ Visual Studio 和 Xamarin 可讓您建立的所有主要平台的行動和桌面應用程式。Microsoft Azure 提供功能強大且彈性的雲端服務,讓您輕鬆地啟動或擴充現有的基礎結構資產和管理伺服器和用戶端體驗之間的資料。最後,行動 DevOps 程序可協助您管理應用程式生命週期,並可讓您自動化整合、 測試、 傳遞和監視您的應用程式。此行動運堆疊的目前版本是由多個工具整合,但否則不同,例如 Visual Studio Team Services (VSTS)、 Xamarin 測試定域機組和 HockeyApp 所組成。Microsoft 已學到很多無法在過去幾年,包括如何開發人員可以採用行動 DevOps 做法更快,其阻力會提供這些產品。

在本文中,我很榮幸宣布公開預覽版本中的產品,將所有的功能結合成單一平台︰ Visual Studio 行動中心。

行動應用程式生命週期

DevOps 做法可以涵蓋整個開發過程中,但它們並不是孤注一擲的承諾。類似於一組命令列工具,每個做法可以單獨使用,但您結合多個做法來取得額外的值。這就是行動中心的設計方式。對於開發人員,包括 API 第一個設計,可讓您使用行動中心,完全透過其 REST API 或命令列介面 (CLI) 開始的絕佳的登入經驗。每項功能可解決特定問題,以及可在它自己。

與組建,就可以您的來源程式碼在任何 Git 儲存機制中,使用每個認可或推播,自動建立可安裝的應用程式套件。最棒的是,您不需要佈建任何代理程式或外部的電腦上執行 macOS 來建置 iOS 應用程式。行動中心搞定,然後將編譯您的 iOS 和 Android 的應用程式直接從原始碼不需要手動設定在您這邊。

在建置程序完成時,您要在實際裝置上執行測試。測試雲端提供超過 400 個唯一的裝置設定,來驗證您的應用程式行為。測試可以撰寫 C# (UITest)、 Ruby (Calabash) 或 Java (Appium),並建置成功後自動執行。

當所有測試都是綠色的時應用程式需要能夠進入測試人員手 — 而這正是 「 發佈 」 功能所提供的功能。輸入電子郵件作為一組 — 叫做 [通訊群組,並可供使用者安裝應用程式直接在他們的電話,就像它們會從應用程式市集下載應用程式。行動中心建置、 測試和發佈一起緊密作業,因此每個程式碼認可取得最大的層級的驗證。而且這些功能都不需要您的程式碼所做的任何修改。

下一個步驟是新增至應用程式監視。它就會自動測試、 手動測試,示範客戶,或在新的版本中啟動應用程式存放區中的使用情況和診斷資料集合重要應用程式的成功。藉由新增行動中心 SDK,您可以收集損毀,並且利用分析來評估品質問題、 了解客戶方式和位置會使用您的應用程式,以及最終回應其要求,以改善分級與評論。

SDK 也可讓兩個其他功能︰ 身分識別與資料表。識別是最快的方式來驗證您的應用程式使用者使用其 Google、 Facebook、 Twitter 或 Microsoft 帳戶。資料表可讓您建立用於檢視、 加入或修改應用程式資料的雲端存放區,即使沒有網路連線。

[圖 1示範這些功能如何讓行動應用程式生命週期。

行動應用程式生命週期與 Visual Studio 行動中心
圖 1] Visual Studio 行動中心與行動應用程式生命週期

入門

註冊行動中心真的很簡單。如果您已經有 HockeyApp 帳戶,您現有的電子郵件和密碼將會繼續處理,這兩個系統之間同步。如果不是,您可以建立新的帳戶,透過註冊表單,但我想要告訴您開始使用最快速的流程︰ 使用 GitHub 連線。如果您住在 GitHub 上跟著我做,您不需要輸入您的 GitHub 密碼 — 您會立刻看到 [驗證] 頁面中顯示**[圖 2**。只核准存取,您將登陸在行動中心儀表板,以完全啟用帳戶。確認沒有電子郵件、 信用卡或其他所需的安裝步驟。

註冊與 GitHub 行動中心
[圖 2 註冊與 GitHub 行動中心

一旦您的帳戶連接到 GitHub,就只需幾個步驟遠離您的第一個組建。建立您的應用程式,只要輸入名稱,然後選取您的 Git 儲存機制和分支,透過 [建置] 功能表中所示**[圖 3**。行動中心將會自動偵測您的專案類型,因此您不需要手動新增或設定建置步驟。在幕後組建管線會佈建虛擬機器來編譯應用程式中,執行所有的單元測試並簽署發佈的應用程式套件。

選取組建的 GitHub 儲存機制
[圖 3 選取組建的 GitHub 儲存機制

建置程序完成時,您可以下載本機安裝的應用程式封裝檔案,使用行動中心測試,實際的裝置上執行自動化的測試或出貨給您的軟體測試人員的應用程式散發功能,您可以繼續。發佈群組的每個成員會收到電子郵件通知的應用程式安裝。只要開啟在電話上的電子郵件,然後再安裝應用程式從瀏覽器。

新增 SDK

當機和分析,您需要將行動中心 SDK 新增至您的專案。SDK 可讓您只在您想在您的應用程式中的功能整合在一起的模組化架構與設計。讓我們開始在 iOS 應用程式的範例。首先,AppDelegate.swift 檔案頂端新增下列 import 陳述式︰

import MobileCenter
import MobileCenterCrashes
import MobileCenterAnalytics

需要的所有功能,雖然可以省略其他兩個,如果您不想當機或分析功能 MobileCenterCore。接下來,啟動 SDK 的 didFinishLaunchingWithOptions 方法中︰

MSMobileCenter.start("{Your App Secret}", withServics:[MSAnalytics.self,
  MSCrashes.self])

應用程式密鑰是 GUID,可以採取行動中心中的應用程式的管理頁面。而不是輸入四行,您只是要複製的應用程式概觀] 頁面上,從所示**[圖 4**。

開始使用行動中心 SDK
[圖 4 行動中心 SDK 入門

安裝程式看起來非常類似,在 Android 上︰

import com.microsoft.azure.mobile.MobileCenter;
import com.microsoft.azure.mobile.crashes.Crashes;
import com.microsoft.azure.mobile.analytics.Analytics;
// ...
MobileCenter.start(getApplication(), "{Your App Secret}", Analytics.class,
  Crashes.class);

藉由啟用損毀模組,SDK 會自動啟動攔截未處理的例外狀況,在 iOS 和 Android,以及低層級的損毀,在 iOS 上。若要產生的測試損毀,您可以在 iOS 上的按鈕處理常式加入下列這一行︰

MSCrashes.generateTestCrash()

在相同的呼叫是適用於 Android:

Crashes.generateTestCrash();

當損壞時,SDK 會將記錄檔儲存在裝置本機儲存體。同樣地,當使用者開啟應用程式所有暫止的記錄檔將會張貼到行動中心的當機後端,並處理。如果您建置 iOS 應用程式與行動中心建置功能,當機記錄檔中的堆疊追蹤將會自動 symbolicated,這表示所有的記憶體位址會轉換成類別和方法名稱、 檔名和行號。如果您使用不同的組建伺服器,或在本機的 Mac 上建置 iOS 應用程式,您會看到新的當機第一次登入 [傳入] 功能表。然後,您可以上傳相符 dSYM 檔案以啟動 symbolication 程序。

藉由啟用分析模組,SDK 將會自動追蹤工作階段、 裝置內容,例如作業系統版本、 模型或製造商及使用者屬性,例如語言或地區,以及行動中心會顯示其對象] 頁面上 (請參閱**[圖 5**)。

對象] 頁面上的行動分析
對象] 頁面上的 [圖 5 行動分析

您可以在 iOS 上追蹤您自己的自訂事件和屬性,以下列行︰

MSAnalytics.trackEvent("Video clicked",
  withProperties: ["FileName" : "RickRoll.mp4"])

在 Android 上,在雜湊對應中指定的屬性︰

Map<String,String>properties=new HashMap<String,String>();
properties.put("FileName", "RickRoll.mp4");
Analytics.trackEvent("Video clicked", properties);

所有遙測、 當機、 事件和屬性會以匿名方式收集並安全地儲存在 Azure 雲端,讓您完整控制資料收集您的應用程式。若要啟用更高的信任層級,行動中心 SDK 是完全開放原始碼,可在github.com/Microsoft適用於 iOS (/ MobileCenter SDK iOS)、 Android (/ MobileCenter-SDK Android) 和 Xamarin (/ MobileCenter-SDK-Xamarin)。建議您檢閱其來源的程式碼和檔案的錯誤,並提供與提取要求。

包含的後端

現今大部分的行動應用程式會利用一或多個線上服務,以啟用其完整功能,例如要同步處理多個裝置之間的待辦事項清單以在多個的特定業務應用程式之間共用資料或限制已驗證的使用者購買優惠訂閱方案的功能。行動中心會支援這些案例,藉由直接使用 Azure App Service,透過資料表和身分識別整合功能。

第一次您按一下任一個功能表項目,您需要連接您的 Azure 訂閱。如果您尚無其中一個,您可以註冊 Azure 免費在bit.ly/1MoL3Rb。一旦您的 Azure 帳戶連結到行動中心,您可以直接從資料表的 [概觀] 頁面來建立資料的資料表。

舉例而言,我建立了具有待辦事項應用程式名稱"TodoItem"的資料表。若要從 iOS 應用程式存取資料表中的資料,我需要初始化 SDK,如下所示︰

let client = MSClient(applicationURLString: "{Your App URL}")
let table = client.tableWithName("TodoItem")

如同應用程式密鑰,應用程式的 URL 應該取代您的應用程式,從行動中心中的 [設定] 頁面的 URL。然後我可以查詢 MSTable 物件的所有可用的項目︰

table.readWithCompletion { (result, error) in
  if let err = error {
    print("ERROR ", err)
  } else if let items = result?.items {
    for item in items {
      print("Todo Item: ", item["text"])
    }
  }
}

若要篩選結果,我可以使用 NSPredicate 物件和 readWithPredicate 方法,例如,若要取得只有未完成的待辦事項︰

let predicate = NSPredicate(format: "complete == NO")
table.readWithPredicate(predicate) { (result, error) in
  // Handle item
}

插入新項目是透過 NSDictionary 物件並插入方法︰

let newItem = ["text": "Write MSDN article", "complete": false]
table.insert(newItem) { (result, error) in
  if let err = error {
    print("ERROR ", err)
  } else if let item = result {
    print("New item ID: ", item["id"])
  }
}

Azure 應用程式服務行動後端會自動產生新資料行是根據字典中,包括唯一識別碼。我也可以提供自己的識別碼做為字典索引鍵-值組。類似於插入,方法 update 和 delete 讓我完成的待辦事項項目之後,修改資料,例如,然後予以刪除。而且,當然,這不只適用於 iOS 應用程式,但所有支援平台行動中心。

程式碼後到目前為止所示,應用程式的所有使用者會都存取相同的待辦事項清單或較常見地,相同的資料上的裝置。這通常是不理想。一般而言,每個使用者想要管理自己的待辦事項清單。我可以加入我的應用程式的身分識別功能來達成。行動中心支援五個現成的身分識別提供者︰ Azure Active Directory、 Facebook、 Google、 Microsoft 帳戶和 Twitter。應用程式可以使用這些身分識別提供者的數量,讓使用者使用他們慣用的帳戶登入。有兩種方式可以整合功能︰

使用提供者 SDK (例如 Facebook SDK),使用者可以登入緊密整合了應用程式執行所在的作業系統的經驗。登入程序的一部分,應用程式會取得要傳送回 Azure 應用程式服務,然後驗證權杖,並取代成新的應用程式的服務權杖提供者權杖。應用程式也可以儲存提供者權杖供本身使用。若要存取 Facebook 圖形 API,例如。

沒有 SDK 的提供者,您可以使用行動中心 SDK 中的下列方法︰

client.loginWithProvider("google", controller: self, animated: true) { (user, error) in
  // Load data
}

這會開啟網頁檢視提供者,然後使用者可以登入。提供者權杖直接處理伺服器端和應用程式永遠不會收到它。在流程的結束時,行動中心 SDK 有應用程式服務語彙基元,其會自動附加至後端的所有要求,並確保應用程式的資料才可以存取的已驗證的使用者。

展望未來

這篇文章中所述的所有功能都都適用於 iOS 和 Android 開發人員公開預覽現在可用。註冊免費的aka.ms/mobilecenter。接下來的幾個月,Microsoft 將持續提供更多的功能和值,包括支援的 Windows 開發人員、 利用 VSTS 的整合和更多的後端服務,例如離線資料同步處理。我們的目標是行動中心會變成您的行動和桌面應用程式生命週期的創作︰ 建置、 測試、 發佈、 監視和連線到雲端。我的小組,我很興奮新一代 microsoft 行動開發作業,而且我們希望您我們這個了。


Thomas Dohmke是 HockeyApp,係由 Microsoft 晚期 2014年中的創辦人。 Dohmke 是 Visual Studio 行動中心小組程式經理,負責推動產品的願景和管理小組的每項功能的程式經理。透過電子郵件存取他thdohmke@microsoft.com或 Twittter: @ashtom


討論 MSDN Magazine 論壇的文章