想起来一个笑话:唐僧一行千辛万苦来到佛祖面前,准备取经,佛祖轻声问了一句:汝等带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