Windows Mobile 5.0 中为开发人员提供的新功能(4)
2007-03-19 18:13

Windows Mobile 5.0 SDK

Windows Mobile 5.0 SDK 可免费下载,它将 Windows Mobile 5.0 开发人员工具集成到 Visual Studio 中。Windows Mobile 5.0 SDK 提供了必要的模拟器、帮助文件、头文件和库,以使那些将应用程序面向 Windows Mobile 5.0 的开发人员可以利用该平台。表 11 总结了安装 Windows Mobile 5.0 SDK 的好处。

表 11. Windows Mobile 5.0 SDK 功能
功能 说明

Windows Mobile 5.0 模拟器

安装整套 Windows Mobile 5.0 Pocket PC 和 Smartphone 模拟器映像,使它们可以直接从 Visual Studio 中使用。

Windows Mobile 5.0 文档

安装完整的 Windows Mobile 5.0 文档集,将其完全集成到 Visual Studio2005 帮助系统中。

Windows Mobile 5.0 本机头文件和库

安装 C/C++ 开发人员所需的所有头文件和库,它们用于创建能够利用 Windows Mobile 5.0 功能的应用程序。

Windows Mobile 5.0 托管程序集

安装 C# 和 Visual Basic .NET 开发人员所需的所有托管程序集,这些程序集用于创建能够利用 Windows Mobile 5.0 托管 API 的应用程序。这些功能对 .NET Compact Framework 1.0 和 2.0 应用程序都是可用的。

Windows Mobile 5.0 项目

在 Visual Studio2005 中安装和注册 Windows Mobile 5.0 项目类型。

迁移到 Visual Studio2005

Windows Mobile 5.0 不需要开发人员将用 eMbedded Visual C++ 3.0、eMbedded Visual C++ 4.0 或 Visual Studio .NET 创建的现有应用程序升级到 Visual Studio。用上述工具生成的应用程序可以继续在 Windows Mobile 5.0 上运行。Windows Mobile 5.0 将这些应用程序视为“旧式”应用程序。如果没有明确指定这些应用程序具有分辨率敏感性,则它们会受到在本文的“分辨率和方向敏感性”部分中讨论的对应用程序显示进行的运行时修改的影响。这些现有的应用程序可能还具有需要开发人员给以特别关注的库或 API 依赖项,并且在部署到 Windows Mobile 5.0 设备时可能要满足严格的安全需求。

Windows Mobile 5.0 包含对以前的 Windows Mobile 平台的重要更改,其中包括对已安装的库和安全模型的更改。建议正在考虑将现有应用程序部署或迁移到 Windows Mobile 5.0 的开发人员阅读 Windows Mobile Platform Migration FAQ for Developers

尽管用 eMbedded Visual C++ 3.0、eMbedded Visual C++ 4.0 和 Visual Studio .NET 创建的应用程序可以继续在 Windows Mobile 5.0 设备上运行,但只有 Visual Studio2005 可以直接面向 Windows Mobile 5.0 设备或模拟器调试和部署应用程序。

Embedded Visual C/C++ 项目迁移到 Visual Studio

Visual Studio 提供了一整套设备开发工具,以便改进由 eMbedded Visual C++ 3.0 和 4.0 提供的编译器和库。这些更改以及 eMbedded Visual C++ 和 Visual Studio2005 项目文件之间的差异要求对迁移到 Visual Studio2005 的现有 eMbedded Visual C++ 项目进行多处修改。

这些修改包括在 Visual Studio2005 中创建新的项目文件(可能基于 eMbedded Visual C++ 项目文件)以及将项目头文件和源文件添加到新的项目中。在完成这一工作之后,编译器和库中的差异可能要求对项目属性进行更改,而且在某些情况下,开发人员可能需要更改源代码本身。在很多情况下,源代码更改是新编译器提供的改进的 C++ 标准一致性的结果。

为了简化迁移,Visual Studio2005 提供了升级向导。开发人员可以使用该向导将单个项目或整个 eMbedded Visual C++ 工作区转换为 Visual Studio2005 解决方案。该向导是自动启动的,方法是使用 Visual Studio2005 的标准打开项目功能打开原始 eMbedded Visual 项目或工作区。

使用 Visual Studio2005 打开项目功能

File 菜单上,指向 Open,然后单击 Project/Solution

Visual Studio2005 就地执行项目升级,并且将原始头文件和源文件添加到新的项目中。强烈建议您在启动升级过程以前,生成 eMbedded Visual C++ 项目或工作区(包括所有相关文件)的备份。

升级向导执行下列任务:

创建新的 Visual Studio2005 项目;或者,在迁移工作区时,创建新的 Visual Studio2005 解决方案。

如果向导要转换工作区,则所有工作区项目都被作为 Visual Studio2005 项目添加到新的解决方案中。

将所有项目文件添加到它们各自的项目中。

将所有项目属性和设置映射到它们的 Visual Studio2005 等效内容。

将原始项目所面向的任何被否决的平台或体系结构映射到等效的平台或体系结构。

升级向导旨在升级项目和工作区 — 该升级向导不会对源代码进行任何更改。在升级向导完成以后,下一步是编译代码并纠正任何编译问题。

Migrating Microsoft eMbedded Visual C++ Projects to Visual Studio 2 中提供了迁移过程的详细说明以及常见迁移问题的列表。强烈建议开发人员在首次执行从 eMbedded Visual C++ 到 Visual Studio2005 的升级时参阅该文档。

Visual Studio2003 项目迁移到 Visual Studio2005

将项目或解决方案从 Visual Studio .NET2003 迁移到 Visual Studio2005 的托管开发人员应该发现该过程相当顺利。Visual Studio2005 提供了升级向导,以便自动将项目设置转换为 Visual Studio2005 中的等效值。它还自动将项目源文件添加到刚刚创建的项目中。该升级向导不会对源代码文件进行任何更改。强烈建议开发人员在执行升级之前备份整个项目或解决方案,包括所包含的所有文件。

强烈建议那些要将 Visual Studio .NET2003 项目迁移到 Visual Studio2005 的开发人员以及那些打算面向 Windows Mobile 5.0 的开发人员阅读 Windows Mobile Platform Migration FAQ for Developers,因为某些平台更改可能影响应用程序在 Windows Mobile 5.0 设备上进行安装和运行的能力。

远程工具

为了高效地开发设备应用程序,开发人员需要经常与目标设备交互。开发人员在开发应用程序的过程中执行的很多常见任务(如查看文件系统或修改注册表)可能难以直接在设备上执行。为了简化这些任务以及其他设备管理和监视任务,Visual Studio2005 提供了远程工具。

Visual Studio 远程工具是一组桌面计算机实用工具,它们提供了常见的设备监视和管理功能。表12 显示 Visual Studio2005 远程工具。通过使用这些工具,开发人员在监视和管理设备或模拟器时可以获得能够与他们的桌面计算机交互相媲美的简单性和效率。这些工具与 eMbedded Visual C++ 中随附的远程工具非常类似。但是,Visual Studio 是第一个同时向本机和托管开发人员提供这些实用工具的程序。

表 12. Visual Studio2005 远程工具
远程工具 说明

Remote File Viewer

用于查看设备或模拟器文件系统以及与它们交互,包括在设备和桌面计算机之间复制文件(参见图 14)。

Remote Heap Walker

用于分析设备或模拟器进程的堆布局和内存内容。

Remote Process Viewer

用于查看有关设备或模拟器进程的详细线程和 DLL 信息(参见图 15)。还可以用来结束设备或模拟器进程。

Remote Registry Editor

用于查看和修改设备或模拟器注册表。

Remote Spy

用于查看在设备或模拟器上运行的进程所拥有的 Windows 列表,包括有关窗口句柄和收到的窗口消息的详细信息。

Remote Zoom In

用于捕获设备或模拟器屏幕快照。(用户可以放大屏幕快照,也可以选择将屏幕快照保存为位图。)


14. Visual Studio2005 Remote File Viewer


15. Visual Studio2005 Remote Process Viewer

本机编译器和库

Visual Studio 为本机开发人员提供了很多重要的增强功能。这些增强功能包括编译器、标准 C 库、MFC 和 ATL。除了提供改进的应用程序质量以外,这些增强的版本与它们的桌面计算机对应组件具有更多的可比性 — 它们进一步提高了开发人员在桌面计算机和设备应用程序开发之间共享代码和技能的能力。

编译器

Visual Studio 向本机设备开发人员提供了一整套支持 ARM、MIPS、SH 和 x86 平台的新的设备交叉编译器。这些编译器已经完全用新的编译器前端(它基于最新的桌面计算机编译器)进行了重构。

常见的前端体系结构在桌面计算机和设备之间提供了更大的编译器行为一致性,从而使开发人员可以更为容易地迁移应用程序代码和他们的技能。转而进行设备开发的开发人员还可以保护现有的代码投资,并且最大限度地缓和他们的学习曲线。因为新的编译器前端是基于桌面计算机编译器的,所以很多桌面计算机编译器功能现在被合并到了设备编译器中。

由于合并了桌面计算机编译器功能,因此设备编译器能够提供很多以前无法得到的优化改进。除了编译器优化以外,设备开发人员现在还获得了链接时代码生成的好处。链接时代码生成为应用程序提供了进行比仅仅执行编译器优化更大的优化的机会,因为该优化可以跨编译模块(*.bin 文件)执行,从而有机会将程序作为一个整体进行优化。

编译器改进并不限于代码优化。因为设备编译器利用了桌面计算机编译器,所以它现在能够合并很多以前仅限于桌面计算机的功能。例如,设备编译器现在提供了更高级别的 C/C++ 标准一致性。同样,设备编译器现在能够提供显著增强的 Unicode 支持。

除了提供更新的编译器以外,Visual Studio2005 还提供了本机库的更新版本,包括标准 C++ 库 8.0 (SCL)、标准模板库 8.0 (STL)、Microsoft 基础类 8.0 (MFC) 和活动模板库 8.0 (ATL)。像编译器一样,上述所有库都已经进行了更新,并且现在基于它们的桌面计算机对应组件。尽管基于相应的桌面计算机库,但每个设备实现都是桌面计算机实现的子集。该子集基于大小方面的考虑、性能方面的考虑、基础操作系统功能的可用性和平台适应性。

使新的本机库基于它们的桌面计算机对应物,为设备开发人员提供了很多好处。最明显的好处是应用程序代码现在具有更高的可移植性,因为库本身的桌面计算机和设备版本具有更高的兼容性。这种可移植性也适用于开发人员的技能。过去,一些桌面计算机库比相应的设备实现更加稳定。更新的库现在为设备开发人员提供了最高质量的可用实现。

对于使用 MFC 或 ATL 的开发人员,需要记住的是,Windows Mobile 5.0 设备随附了安装在 ROM 中的 MFC 3.0 和 ATL 4.0。使用新的更新库 MFC 8.0 和 ATL 8.0 的开发人员必须确保将版本 8.0 库静态链接到他们的应用程序中,或者在他们应用程序的安装中包含版本 8.0 DLL。

有关使用 Visual Studio 进行本机应用程序开发的详细信息,请参阅 What's New in Visual Studio 2005 for Native Developers

其他影响开发人员的 Windows Mobile 5.0 更改

除了已经讨论的工具和 API 以外,Windows Mobile 5.0 还提供了很多改进。下表概述了一些附加的 Windows Mobile 5.0 功能。

ROM 中提供的软件

表 13 显示在所有 Windows Mobile 5.0 设备的 ROM 中提供的一些关键的开发人员库、控件和运行库。应用程序需要的以及该表中未列出的任何库、控件或运行库都必须显式安装到目标设备上。请注意,Windows Mobile 5.0 的 ROM 中未提供 .NET Compact Framework 2.0、SQL Mobile2005、MFC 8.0 和 ATL 8.0,因此您必须安装它们(或者,对于 MFC 8.0 和 ATL 8.0,可以将它们静态链接到您的程序中)。

表 13. Windows Mobile 5.0 设备 ROM 中的库、控件和运行库
.NET Compact Framewor.1.0 SP3 Contact Selection Dialog

MFC 3.0 和 ATL 4.0

Windows Media 10 OCX

State and Notification Broker

Managed Telephony

DirectShow

Managed Outlook Mobile

Direct3D Mobile

Managed Messaging

DirectDraw

Managed Configuration Manager

Picture Selection Dialog

GPS API

分辨率和方向敏感性

Windows Mobile 5.0 设备支持多种屏幕大小和方向(包括纵向、横向和方形)。所有面向 Windows Mobile 5.0 的应用程序都标记为具有屏幕分辨率和方向敏感性;因此,开发人员所面临的一个非常重要的问题是,设计和验证应用程序以便在各种屏幕分辨率和方向下有效地工作。除了验证对不同分辨率和方向的支持以外,开发人员还应该使应用程序做好设备方向在应用程序生存期中的任何时间更改的准备,因为很多 Windows Mobile 5.0 设备支持在纵向和横向之间动态更改。

对于托管开发人员,为处理不同屏幕分辨率和方向而进行准备的最佳方式通常是利用托管控件的 DockAnchor 属性。托管应用程序自动调整每个应用程序窗体的大小,以匹配当前设备的屏幕布局。当用户在应用程序运行过程中更改设备的屏幕方向时,所有应用程序窗体都将自动重定向,以匹配新的屏幕布局。通过使用 DockAnchor 属性,在发生任何窗体布局更改时,所有窗体控件都将自动重定位。

对于本机开发人员,Visual Studio2005 在 DeviceResolutionAware.h 中提供了很多 Helper 函数,以简化使应用程序具有分辨率和方向敏感性的过程。通过使用所提供的 Helper 函数,开发人员可以设计应用程序以询问当前方向,缩放图形资源,以及用更加适合当前屏幕布局的资源修改当前对话框布局。表 14 列出其中一些函数。

表 14. 为屏幕分辨率和方向管理提供帮助的本机函数
函数 说明

DRA::GetDisplayMode

确定显示当前被配置为纵向、横向还是方形。

DRA::RelayoutDialog

修改对话框的布局以符合指定的对话框资源。

DRA::StretchIcon / DRA::StretchBitmap

将图标或位图拉伸到指定的大小。

DRA::ImageList_LoadImage

根据指定的位图创建图像列表,自动缩放图像以适应位图和屏幕 DPI(每英寸点数)值方面的差异。

无论开发人员是使用托管开发工具还是本机开发工具,开发人员都应该使所有面向 Windows Mobile 5.0 的应用程序做好适应所有受支持的屏幕大小和方向的准备。通过使用 Windows Mobile 5.0 SDK 随附的模拟器,开发人员可以轻松地验证应用程序外观和行为,因为所提供的模拟器代表了所有可能的 Windows Mobile 5.0 屏幕布局。

Windows Mobile 5.0 将继续运行现有的可能不具有屏幕敏感性的应用程序。当应用程序面向的分辨率低于设备支持的分辨率时,Windows Mobile 5.0 将自动执行像素加倍处理,缩放应用程序以使其与设备显示匹配。如果设备方向导致应用程序显示的某些部分被切掉,则 Windows Mobile 5.0 会自动添加滚动条,以使用户可以滚动和查看屏幕的其余部分。

Pocket PC 软键

Windows Mobile 5.0 为 Pocket PC 引入了软键。如图 16 所示,软键是应用程序可以修改的键,它们出现在屏幕的底部,并且与屏幕正下方的硬键相联系。软键自 Smartphone 最初发布以来就已经存在了,并且已经成为有价值的用户工作效率工具。在 Pocket PC 上,软键可以避免使用笔针的需要,因为它们使用户能够通过只使用一只手来与应用程序交互。


16. Windows Mobile 5.0 Pocket PC 软键。

向应用程序中添加智能键就像设计菜单一样简单。在设计应用程序时,请简单地创建一个只带两个选项的菜单。当该应用程序执行时,Windows Mobile 5.0 会将每个菜单选项映射到某个软键。Windows Mobile 5.0 自动为任何包含带有一个或两个选项的菜单的应用程序提供该行为。包含两个以上选项的菜单呈现为传统的菜单。

持久存储区

Windows Mobile 5.0 能够防止所有数据和应用程序遭受与电源有关的损失。因为 Windows Mobile 5.0 将整个文件系统和注册表装入到持久存储区中(而不是使用 RAM),所以,Windows Mobile 5.0 设备就为用户和应用程序都提供了可靠的存储平台 — 即使是在缺少电池电源的情况下。

持久存储区为应用程序开发人员提供了可靠的存储系统,该系统完全是通过标准文件系统和注册表 API 实现的。持久存储区针对大型读写操作进行了优化;因此,大块读写数据的应用程序的性能往往要超过那些读写小块数据的应用程序。

EDB

为了改善应用程序的性能和长期可移植性,CEDB 对象存储区已经被 EDB 所取代。EDB 利用了 SQL Mobile 使用的存储子系统,并且提供了明显优于 CEDB 的性能(尤其是在与持久存储区一起使用时)。将应用程序从 CEDB 移植到 EDB 的影响最小,因为 CEDB 提供了与 CEDB 完全相同的函数集 — 所有函数都具有相同的名称和参数列表。

Pocket PC 应用程序安全

为了帮助用户和企业保护其 Pocket PC 设备的完整性,Windows Mobile 5.0 将 Smartphone 所使用的基于证书的应用程序安全模型引入到 Pocket PC 中。通过该应用程序安全模型,Windows Mobile 5.0 设备依靠数字代码签名来验证用户安装到设备中的任何应用程序确实来自它所声称的来源,并且在用户将其安装到设备中以前,没有人修改过该应用程序。

默认情况下,当在 Windows Mobile 5.0 Pocket PC 上启动新的应用程序安装时,在执行实际安装以前,设备会检查该应用程序是否已经用来自受信源的证书进行了数字签名。如果该设备确定该应用程序来自受信源,则它会安装该应用程序。如果该应用程序未签名或未用来自已知受信源的证书签名,则设备会提示用户确认是否应该继续执行该安装。该模型使用户能够完全控制将哪些应用程序安装到他们的设备上。

对于希望严格控制安装在企业设备中的应用程序的企业,它们可以修改该默认模型。在该方案中,企业可以移除默认的受信源列表,并且可以安装它们自己的列表。此外,企业可以禁用在应用程序未签名或来自未知源时提示用户的选项。在企业禁用该选项以后,用户只能安装由该企业认为是受信源之一签名的应用程序。该模型显著提高了企业设备的稳定性和可靠性,这是因为它消除了由用户安装个人软件引起的相关问题和支持问题。

Pocket PC Smartphone 共享公共 CAB 格式

用于 Pocket PC 和 Smartphone 的 Windows Mobile 5.0 软件共享一种公共的 CAB 格式。共享一种公共的 CAB 文件格式可以显著减少创建 CAB 文件和支持安装过程所需的时间,因为所有设备安装都是通过单个 CAB 处理的。

ActiveSync

任何移动设备应用程序中的关键考虑事项之一是,如何将该设备中的数据与桌面计算机或后端服务器中的数据进行同步。对于许多应用程序而言,答案是 ActiveSync,因为它为 Windows Mobile 设备提供了端对端数据同步解决方案。对于 Windows Mobile 5.0,ActiveSync 合并了很多增强功能,以便提供更高质量的、更可靠的同步体验。

改进的 USB 2.0 支持

尽管 ActiveSync 提供了很多连接选项(包括蓝牙、红外线和串行端口),但开发人员最经常使用的是 USB 2.0。为了在开发人员通过 USB 2.0 连接进行连接时改进 ActiveSync 体验,ActiveSync USB 驱动程序已经完全进行了重构。这些新的驱动程序现在充分利用了 USB 2.0 硬件的功能和性能。此外,这些新的驱动程序现在可以更加有效地与桌面计算机网络服务协作。这些新的驱动程序加之它们与桌面网络服务之间的更好合作,一起显著提高了同步吞吐量。

改进的多重合作关系管理

ActiveSync 除了现有的对与多个桌面计算机保持合作关系的设备的支持以外,还改进了它对合作关系管理的处理。现在,ActiveSync 支持与桌面计算机和服务器同时保持合作关系。ActiveSync 还具有重新构建的用于检测合作关系之间的冲突的逻辑。这一新逻辑在检测冲突方面更为有效,从而显著减少了在合作关系之间出现重复信息的情况。

改进的 Exchange 同步

更新 ActiveSync 的关键焦点之一是,改进用户在将设备与 Exchange 进行同步时的总体体验。这些更新已经导致了多个关键性的变化。最显著的变化之一是在与 Exchange 同步时的连接可靠性方面的改进。这一改进不仅产生了更为成功的初始连接,而且减少了丢弃的或不完整的连接数量。这些更改还改进了在直接与 Exchange 服务器进行同步和通过桌面计算机连接与 Exchange 同步之间的同步连续性。这些同步方式现在提供了完全相同的同步行为和结果。

ActiveSync 现在提供了更为完整的 Exchange 同步体验。ActiveSync 除了长久以来支持约会、联系人和日历的同步以外,它现在还支持同步任务。作为提供更为完整的体验的一部分,ActiveSync 现在还能够同步其他 Outlook 属性。其中最值得注意的是,它现在能够同步作为联系人的一部分而包含的图片。

改进的安全

除了对功能进行增强,ActiveSync 还包含很多安全增强功能。这些增强功能是严格的安全审查的结果,旨在更好地保护您、您的设备、数据和桌面计算机。一项关键性的安全更改是移除远程同步。在以前的版本中,远程同步使设备可以通过使用 WiFi 连接进行同步。在经过审查之后,该功能被认为没有提供足够的安全,并且已经被移除。

RAPI

Windows Mobile 远程 API (RAPI) 是一系列用于从桌面计算机中管理和控制所连接的设备以及与其进行交互的函数。除了支持长期存在的 C 样式 RAPI 以外,Windows Mobile 5.0 还提供了新的基于 COM 的实现。新的基于 COM 的 RAPI 提供从现有 C 样式实现进行的关键性体系结构转换。与假设恰好有一个 Windows Mobile 设备连接到桌面计算机的 C 样式 RAPI 不同,基于 COM 的 RAPI 被设计为支持多个同时连接到桌面计算机的设备并且与它们进行交互。

需要说明的是,Windows Mobile 5.0 仍然只支持将单个设备连接到桌面计算机 — 它不支持多个同时连接的设备。但是,将来的 Windows Mobile 实现可能支持将多个 Windows Mobile 设备同时连接到单个桌面计算机这一功能。

尽管编写为使用新的基于 COM 的 RAPI 的应用程序将被限制为与单个已连接的 Windows Mobile 5.0 设备进行交互,但这些应用程序已经做好了在对相应功能的支持添加到将来的 Windows Mobile 设备中以后,与多个已连接的设备进行交互的准备。建议所有刚刚创建的面向 Windows Mobile 5.0 的 RAPI 应用程序都使用基于 COM 的 RAPI。表 15 显示三个主要的 RAPI COM 接口。

表 14. 主要的 RAPI COM 接口
接口 说明

IRAPIDesktop

代表当前的桌面计算机。提供枚举已连接的设备列表、查找特定设备以及监视有无新连接的功能。

IRAPIDevice

代表已连接的设备。提供询问设备、确定设备连接类型以及与该设备之间启动 RAPI 会话的能力。

IRAPISession

代表与已连接的特定设备之间的 RAPI 会话。该接口用于执行实际的设备交互。

Windows Media Player

Windows Media Player 为用户提供丰富的多媒体体验,它同时为音频和视频播放提供了高质量的支持。Windows Mobile 5.0 通过将 Windows Media Player 公开为 OCX,向那些希望将多媒体播放功能合并到其应用程序中的应用程序开发人员提供了这些功能。使用 Windows Media OCX,开发人员可以管理播放列表、枚举内容、流式传输内容、控制播放质量,等等。图 17 显示 Windows Media Player Library 和 Music Playback 屏幕。


17. Windows Media Player 10 Library Music Playback 屏幕。

小结

Windows Mobile 5.0 使开发人员能够轻松地利用现代移动设备的强大功能。强大的本机和托管 API 一起为开发人员提供了易于使用的高效开发平台。类和库与它们的桌面计算机对应组件之间的高度连续性以及 Visual Studio2005 所提供的统一开发环境一起,共同提高了开发人员的工作效率,并且使开发人员能够更有效地利用他们的技能和代码投资。

Windows Mobile 5.0 是最强大的可用移动设备平台。在使开发人员能够继续致力于完善和最大限度地利用他们的核心技能集的同时,Windows Mobile 5.0 和 Visual Studio2005 共同使开发人员能够创建更加强大且更易使用的应用程序。