想起來一個笑話:唐僧一行千辛萬苦來到佛祖面前,準備取經,佛祖輕聲問了一句:汝等帶U盤了嗎?師徒4人馬上昏倒在地。好吧,扯遠了,不過是想告訴你們準備工做必定要到位。html
Universal App 的打包發佈其實與傳統的 Windows Phone / Windows Store App 項目並沒有太大不一樣,可是鑑於總有人會在這些步驟中遇到問題,並且即便是發佈過幾個應用的開發者也不例外,因此對這個看起來比較繁瑣的過程作一個小結仍是必要的。git
在調試程序時,咱們一般會選擇 debug 模式,可是發佈時不要忘記切換到 Release 模式,不然程序打包後連驗證程序都不會執行,更不用說上傳到應用商店了。爲了保證程序在全部設備上都運行,咱們選擇 Any CPU,這樣就能夠保證咱們的 UAP 運行在全部能夠運行的平臺上(包括基於 ARM 架構的 Windows RT 平板和基於 x86 架構的平板,例如 Surface Pro)了。github
Manifest 文件記錄了項目中的一些基礎元數據,包括項目名稱,申請的權限,項目的 Logo 和發佈者信息等等,只有這些信息都填寫完整而且準確,打包的文件才能保證經過上傳時的自動驗證。windows
在項目中咱們能夠找到本項目的 appxmanifest 文件。安全
咱們還能夠經過菜單中的選項找到修改 Manifest 文件的入口。服務器
下面咱們來逐個標籤檢查 Manifest 文件的內容是否完整。網絡
在 Application 標籤頁中,咱們須要填寫項目的基本信息,並確認是否須要修改對應的屏幕旋轉方向和在鎖屏時如何通知用戶。架構
與 Windows 項目不一樣的是, Windows Phone 項目還須要用戶填寫是否容許將 App 安裝到 SD 卡的選項。app
在 Visual Assets 標籤頁中,咱們須要將全部用到的 Logo 圖片作好對應,通常來講,若是在 Assets 文件夾中圖片的命名規範正確的話,這裏能夠自動檢測並將圖片自動載入的。測試
須要注意的是,Badge Logo 的圖片要求比較嚴格,要求只能有白色和透明兩種顏色,哪怕有一個像素出現別的顏色,都會在自動驗證程序時檢測到而且不予經過,因此修改這幾個圖片的時候要務必當心,確認只包含白色和透明色。
在 Capabilities 頁面,咱們須要填寫項目申請的權限,例如本項目必須在網絡下運行,因此必須申請 Internet 權限。最關鍵的注意事項是,任何 Windows App,若是申請了網絡權限,就必須在 Setting 菜單中添加隱私聲明 (Privacy Statement)的入口,不然會不能經過人工審覈階段。關於如何添加隱私聲明,請參考以前的博客:博客園客戶端(Universal App)開發隨筆 - Setting Page的實現方法與經驗
Windows Phone 的項目還須要額外填寫對於設備傳感器的申請,若是在 App 中應用到了陀螺儀,磁場傳感器,NFC,前/後攝像頭等資源,須要在這裏予以聲明。
在 Declarations 標籤頁中,咱們要對 App 使用的其餘資源進行聲明,例如博客園項目使用到了後臺任務,就須要在這裏聲明後臺任務的入口。
若是 App 使用到了特殊的通知事件,能夠在 Content URIs 頁面進行聲明,須要注意的是,Windows 8.1 僅支持 https 協議的安全頁面,再也不支持 http 協議。
Packaging 頁面很是關鍵,這裏的任何一項填錯都會致使項目通不過上傳時的自動審覈。不過好在若是咱們在下面的步驟中選擇了將項目對應到商店中的 App,那麼這個頁面中的大部分項目都會自動填好。而若是咱們選擇僅僅打包,委託別人幫忙發佈,那麼這些信息就必定要填寫完整。本頁面中須要填寫的信息,能夠在對應的開發者帳戶頁面找到信息。
另外一個注意事項是最後的 Generate app bundle 選項。若是選擇了 always,那麼若是以前的 Visual Assets 中有對應的多種尺寸的圖片,那麼打包時就會生成一個對應多種尺寸設備的整包(bundle)。這樣之後再更新項目,也必須上傳一個 bundle,不然就不能經過上傳審覈。這也意味着,Assets 文件夾裏的圖片只能增長,不能再減小。
固然以上的全部項目,咱們均可以右鍵點擊 manifest 文件,選擇 view code 進行修改或更新。貌似這也是一個更適合 geek 的方法。
Manifest 文件修改完以後,咱們就能夠開始正式的打包工做了。
這裏咱們選擇 Create App Packages
在這裏,有兩種選擇,選擇Yes是直接登錄 Microsoft Dev 帳戶,將項目和商店中的 App 進行綁定,這樣 Manifest 文件中關於開發者的信息會自動更新到 Microsoft Dev 帳戶的對應信息。這種方式適用於本身發佈本身項目的狀況。
選擇No是不登錄帳戶,僅僅打包。這種狀況適用於委託第三方幫忙發佈項目的狀況,或者是想先打個包出來給別人共享用做測試,測試完成後,你就能夠直接用這個測試包提交應用了,這樣更符合通常的工做流程,避免你的測試包和最後提交商店的包不一致。
咱們強烈建議選擇No,使用第二種方式。 在下一篇隨筆中會詳細說到如何提交應用。
咱們先選擇第一種,登錄 Microsoft Dev 帳戶。
登錄之後,該開發者以前提交過的項目就都顯示出來,咱們也能夠爲新項目從新預留一個名字。
爲項目選擇版本信息,輸出位置,是否打包生成和 CPU 等信息。
都填寫完以後,就能夠打包項目了。打包完成後,會顯示項目位置,並會提醒開發者爲項目執行驗證程序(Windows App Certification Kit)。因爲上傳後服務器會首先執行這個程序對項目進行初次自動驗證,若是有不合規範的地方就不予經過,因此爲了確保上傳的成功性,咱們一般會在本機先執行一次驗證程序。
若是驗證程序在本機經過,那麼就能夠向商店上傳應用了。因爲篇幅所限,咱們會在未來的文章中繼續介紹商店上傳的注意事項。
本文按照流程介紹了 Universal App 在上傳商店前的打包步驟,並分析了 Windows 和 Windows Phone App打包時的細小區別和容易致使上傳失敗的注意事項。
咱們的已經發布的應用和代碼能夠在下面找到:
Windows Phone Store App link:
http://www.windowsphone.com/zh-cn/store/app/博客園-uap/500f08f0-5be8-4723-aff9-a397beee52fc
Windows Store App link:
http://apps.microsoft.com/windows/zh-cn/app/c76b99a0-9abd-4a4e-86f0-b29bfcc51059
GitHub open source link:
https://github.com/MS-UAP/cnblogs-UAP
MSDN Sample Code:
https://code.msdn.microsoft.com/CNBlogs-Client-Universal-9c9692d1