[Windows Phone]關於Windows Phone模擬器
前言
這篇文章主要在探討Windows Phone 8模擬器啟動程式(讓我們不用Visual Studio就可以啟動)、映像檔結構與運作原理。
系統需求與條件
不免俗的還是必須提一下,如果要使用Windows Phone 8的模擬器,您的作業系統必須要是Win8或Win 8.1、CPU處理器一定得要有支援 SLAT(第二層位址轉換)、且要啟用Hyper-V,那關於Windows Phone模擬器的映像檔要如何取得?請到微軟官方下載Windows Phone SDK 8.0(http://www.microsoft.com/zh-tw/download/details.aspx?id=35471)裡頭就有包含了~
PS: 若安裝Visual Studio 2013的讀者,請不用在下載安裝Windows Phone SDK,因為在Visual Studio 2013安裝檔已經有包含,若當初安裝時勾掉的再把它拿出來裝吧!
模擬器啟動程式xde
Windows Phone的模擬器啟動程式位於"C:\Program Files (x86)\Microsoft XDE\8.0",基本上是提供模擬器實體的外框(Skin),可以看到此資料夾下有各種螢幕大小的外框圖:
而Windows Phone的主要映像檔則在"C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Emulation\Images":
仔細一看會發現,Flash.vhd最大(將近2G),而其他大小XXXxYYY的檔案只有3X MB
因為在這裡使用了Hyper-V的差異磁碟技術,所以所有模擬器會先讀Flash.vhd、再讀Flash.XXXxYYY.vhd
知道映像檔位置與啟動程式那就可以開始啟動映像檔了~
請絕對先不要做以下敘述:
1. 以"管理員身分"啟動Cmd(Command Prompt)
2. cd到"C:\Program Files (x86)\Microsoft XDE\8.0”
3. xde -vhd "C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Emulation\Images\Flash.vhd"
使用以上敘述後,確實可以開啟Windows Phone模擬器,且此模擬器能像Android模擬器一樣具有狀態性,會將所有安裝的APP、設定通通保留,但是從此以後再也不能從Visual Studio正常開啟模擬器除錯了!!!!
因為這樣開啟時,會更動Flash.vhd,導致後續無法由Visual Studio正常開啟模擬器!
從Visual Studio啟動模擬器
那究竟Visual Studio如何開啟模擬器的?
我從Hyper-V管理員發現,原來VS開啟模擬器時,會在
C:\Users\使用者名稱\AppData\Local\Microsoft\XDE
下再建立一個差異磁碟VHD與AVHD檔案
(命名規則: dd.XXXxYYY.ZZZ.vhd,其中XXX螢幕寬、XXX螢幕高、ZZZ記憶體大小)
這也就是為什麼每次Visual Studio重開模擬器時,所有APP都不見了的原因~~
根據MSDN的問答,此種啟動方式應該可以使用以下命令達成:
"C:\Program Files (x86)\Microsoft XDE\8.0\XDE.exe" /vhd "C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Emulation\Images\Flash.vhd" /video "720x1280" /memsize 1024 /language 409 /creatediffdisk "%Temp%\dd.720x1280.1024.vhd" /fastShutdown
想要獲得更多xde的附帶參數,可以下以下命令:
XDE.exe /?
參考資料
1. Tim Chang's DBlog提姆 的 IT 技術文章 - Windows Phone 8 SDK 內容和注意事項
http://www.dotblogs.com.tw/timchang/archive/2012/10/31/79767.aspx
2. MSDN - How to start Windows Phone 8 Emulator without Visual Studio
http://blogs.msdn.com/b/notime/archive/2013/04/21/shortcut-to-start-windows-phone-8-emulator.aspx
3. TechNET - How to Launch Windows Phone 8 Emulator Without Using Visual Studio 2012