第8部分:理解編譯和部署
原文地址:
系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners
Source Code: http://aka.ms/absbeginnerdevwp8
PDF Version: http://aka.ms/absbeginnerdevwp8pdf
如果您回想一下C#基礎系列(C# Fundamentals series),C#編譯器編譯項目中的代碼以創建一個.Net程序集。最終結果通常(至少在簡單的控制台應用程序的情況下)是一個后綴名為".exe"可執行文件。雖然在Visual Studio中我們均與應用程序的調試版本打交道,通過將解決方案配置更改為發布(Release),只要用戶計算機上安裝了相同版本的.Net框架運行時,我們就可以創建適合發布到另一個用戶計算機上的應用程序版本。
在本課中,我將討論如何將我們構建的應用程序部署到運行Windows Phone 8操作系統的物理設備上。到目前為止,我們僅將應用程序部署到手機模擬器上。編譯和部署步驟對我們來說是自動化的,我們並不知道程序如何被打包並安裝到模擬器上。我們需要理解應用程序被打包的方法,因為無疑我們需要將應用程序部署到物理的手機設備上以進行測試,並且我們需要將應用程序打包以便可以將它們提交至Windows應用商店進行審核、下載或銷售。
因此我們本課的計划是:
- 我希望我們能夠看到當編譯應用程序時會發生什么,Visual Studio創建了什么?結果是我們可以學會一些有關部署過程的內容。
- 我想部署到一個實際的物理手機設備,以查看PetSounds應用程序運行在一個實際的手機上。
1.在編譯和部署期間會發生什么
每次當您按鍵盤上的F5鍵或工具欄上的運行按鈕以運行應用程序時,Visual Studio都會創建應用程序的調試版本。如果您回想一下C#基礎系列,它將創建一個Bin\Debug文件夾以存放.NET程序集和任何運行應用程序所需的其他文件。這就是PetSounds應用程序的Bin\Debug文件夾:

在這里有.NET程序集PetSounds.dll,一個可以忽略的文件PetSounds.pdb(它用於Visual Studio調試器和應用程序運行版本之間的協調)。還有一些文件夾與Visual Studio項目中的文件夾相匹配,比如Assets文件夾,用於存放AppResources.resx西班牙語版本的es文件夾以及Properties文件夾。接着還有一個AppManifest文件和一個PetSounds_Debug_AnyCPU.xap文件。
這個.xap文件很大(6MB)。我碰巧知道這個文件后綴表示它是一個部署包。它是一個包含所有文件和配置的文件,被用於將應用程序部署到Windows Phone 8操作系統。
讓我們再次找點樂子!我將該文件拷貝到桌面,右鍵單擊文件並選擇復制。

我右鍵單擊桌面並選擇復制。
一旦文件出現在我的桌面上,我右鍵單擊它並選擇重命名。

我將文件后綴名從.xap更改為.zip。Windows提示我可能會損壞文件:

這是只是一個拷貝,並且Visual Studio在每次部署時都會創建一個新的.xap,所以我選擇對話框中的是選項。
現在文件看起來和我機器上的其他.zip文件一樣。

如果在Windows資源管理器中選擇文件,即使我沒有選擇提取,我也可以看到其中的內容:

原來這個.xap文件實際上是一個.zip文件,它本質上包含我們在項目的\Bin\Debug文件夾下看到的文件。進入/Assets子文件夾:

最終進入/Audio和/Animals文件夾,在這里我看到了在前幾節課上我們拷貝到項目中的.wav文件
讓我們回到.zip文件的根目錄,我想查看AppManifest.xaml和WMAppManifest.xml文件中的內容,我右鍵單擊WMAppManifest.xml文件:

您可能被詢問在Windows 8中用哪個應用程序打開這個文件。選擇記事本。

在記事本中您可以看到WMAppManifest.xml的原始內容。它是XML格式,並且內容很多。在Visual Studio中該文件的復雜性通過一個友好的“設計器”被隱藏起來。Visual Studio中的一個頁面限制了我們可以對該文件進行的更改。

真正的問題是:“這個文件存在的目的是什么?”
WMAppManifest.xml的目的是將您的應用程序介紹給手機。它告訴手機使用哪個圖像作為開始屏幕和應用頁面的磁貼。它告訴手機我們希望使用哪些功能和我們可以支持哪些語言。它告訴手機應用的名稱是什么,應用程序是哪一個版本,我們支持哪些屏幕分辨率等內容。它負責把我們的應用程序集成到Windows 8操作系統和應用程序的生態系統。
2. 部署到一部物理手機
本課我想做的最后一件事是將應用程序部署到我的Lumia 920。本課的其余部分假設您已經有一個Windows Phone開發中心的會員。每年的費用是99美元。
首先,我用手機附帶的USB線把電話插進我的電腦。我之前為了傳輸音樂或為手機充電已經多次這樣做過,但是從來沒有為了部署一個應用程序而這樣做。
在Visual Studio中,我使用運行按鈕旁的向下箭頭將設置從在模擬器中調試更改為在設備中調試。

接着,我單擊工具欄上面的運行按鈕,但是會出現一個錯誤:

(未能連接到設備,因為它已由開發人員鎖定。有關開發人員解鎖的詳細信息,請訪問http://go.microsoft.com/fwlink/?LinkId=195284。)
因此,我需要做的第一件事是解鎖手機以用於開發。使用以下連接以獲取更多信息:
http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/ff769508(v=vs.105).aspx
我將搜索Windows Phone開發人員注冊應用程序(Windows Phone Developer Registration),它隨Windows Phone 8 API一起安裝在我的電腦上。
在Windows 8中,轉到搜索超級按鈕(Search charm):

並輸入”Regi”

這足以找到Windows Phone開發人員注冊應用程序:

運行該應用程序。它將帶您返回桌面並顯示以下對話框,正如您所看到的,它試圖確定您手機的狀態,但是鎖屏界面是鎖住的。

我將鎖屏界面解鎖並單擊重試按鈕。

我單擊注冊按鈕,它讓我登錄到我的微軟賬戶。

請注意,由於某些原因,它總是要求我登錄兩次。如果您遇到類似的行為,請不要慌張。您通常可以在第二次嘗試時進入。
稍等片刻,我將收到一個確認:手機被成功解鎖以用於開發。

我可以通過登錄以下網址進行確認:

- 我導航至儀表板
- 賬戶
- 手機
我剛注冊的手機在這里正確顯示。
您將注意到手機的名稱:” Bob Tabor’s Phone”,我曾在Windows資源管理器中通過右鍵單擊手機並選擇“重命名”更改過手機名稱。這將允許我測試多個電話並將它們區分開來。
現在我已經注冊完手機,我應該可以將應用部署到手機上了。

但是

(未能連接到設備,因為它被密碼鎖定。)
我必須解鎖設備的鎖屏界面並再次測試:
在克服所有困難后,我終於看到PetSounds應用程序在我手機上運行了。

我不僅能夠看到它而且它能夠正常工作。我可以用鴨子的嘎嘎聲去打攪我的小孩和寵物了!
為了退出調試,可以使用Visual Studio工具欄上的停止按鈕。

即使我停止設備上的應用程序的調試,應用程序還在設備上,即使我從計算機上拔下設備,我仍然可以運行它。每次進行調試,與使用模擬器時一樣,它將會把應用程序的最新版本部署至物理設備。
在繼續之前,您可能會看到如下的消息:

(不能安裝應用程序。本手機已達到開發人員應用程序的最大數量。請卸載應用程序並重試。)
顯然,您可以部署到手機上的應用程序有數量的限制。這個數量限制為10。如果出現這種情況,您可以卸載一個或多個開發者應用程序,方式和您卸載普通應用程序相同,即按住磁貼並選擇卸載。
假設由於某種原因您需要注銷用於開發的手機,您可以重新運行Windows Phone開發者注冊工具,它將識別出手機被解鎖用於開發並提供一個選項以注銷手機:

(狀態:被識別的Windows Phone 8設備。本設備當前被解鎖用於開發。單擊注銷按鈕以鎖定手機。)
3. 成為Windows Phone開發中心的成員
最后,正如我較早前提到的,在注冊手機用於開發並部署應用到手機以進行測試前,或隨后在市場銷售您的應用程序,您需要成為Windows Phone開發中心的會員。如果您直接從微軟購買,每年的費用是99美元。
然而還有第二個選項。諾基亞有一個針對Lumia系列的高級開發者計划,它不僅提供一個Windows Phone開發中心的會員資格,還能提供Telerik公司的Rad Controls for Windows Phone(一組針對Windows Phone開發的控件),Buddy.com的會員和當您在開發或部署應用程序過程中遇到問題時可以使用的兩個諾基亞技術支持。我參與了這個計划並且它工作良好。
http://www.developer.nokia.com/Developer_Programs/Lumia_developer_program.xhtml

回顧
綜上所述,本課的重點是部署包的組成,WMAppManifest.xml文件的目的,部署到物理手機設備以便在Visual Studio中進行調試。我們討論了注冊您的物理設備並對其進行解鎖以將開發者應用程序發布到該設備上,以及如何獲取一個Windows Phone開發中心的賬號。
