Windows Phone 8初学者开发—第8部分:理解编译和部署
第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开发中心的账号。