Windows Mobile开发简介

本文描述了如何搭建典型的Windows Mobile开发环境。介绍了相应的IDE、SDK及辅助开发工具的安装及常用配置,并对Windows Mobile下一代开发环境的发展前景做出展望。本文适合初次接触Windows Mobile开发的开发人员。

  Windows Mobile开发简介

  Windows Mobile是微软公司操作系统产品线上重要的一环。与Windows 9x/NT/XP/2003相比,Windows Mobile作为完整产品线出现在公众面前的时间非常短,但它的发展却异常迅速,而在这一发展过程中,开发人员提供了绝对关键的推动力。现在,越来越多的开发人员(特别是.net开发人员)希望能尽快进入Windows Mobile的开发领域,而他们所面临的首要问题,除了熟悉Windows Mobile平台特性之外,便是如何搭建适合的开发环境。因此,本文就将从如何搭建一个Windows Mobile开发环境入手,对Windows Mobile平台的开发特性进行概要描述,以期帮助开发人员迅速进入Windows Mobile开发领域。

  在展开本文的内容之前需要说明的一点是,Windows Mobile平台开发主要包含以下两方面内容:

   平台级开发

   应用级开发

  因为Windows Mobile平台构建于微软的Windows CE系列操作系统之上(当前正式商用版本为Windows CE .NET 4.21),而Windows CE操作系统具有非常良好的模块化特性,因此开发人员,特别是手机设备厂商,可以通过微软提供的Platform Builder及eMbedded Visual C++(以下简称为eVC)非常方便地定制自己所需的操作系统。这对应的是上面所说的平台级开发。

  然而,绝大多数的开发人员并不需要去构建一个全新的、个性化的系统,他们只需要关心如何构建能够运行在Windows Mobile设备上的应用程序。为此,微软按主要智能设备自身硬件设备特性的不同以及用户体验的差异,定制出了Windows CE .NET 4.x系列操作系统的两个主要分支,分别安装在不同的Windows Mobile硬件设备中,从而也就构成了我们通常所说的Pocket PC和Smartphone。以下内容中的Windows Mobile开发,除特指之外,均表示Pocket PC/Smartphone开发。

  本文中提供的大量开发工具,除单独标出的以外,均可在http://msdn.microsoft.com/mobility/downloads/default.ASPx下载

  迅速搭建开发环境

  为了进行Windows Mobile开发,我们需要搭建相应的开发环境。所幸的是,这一环境搭建起来非常简单。

  安装Visual Studio .NET 2003

  为了降低Windows Mobile的开发难度,提高开发人员的开发效率,微软把.NET Framework移植到了Windows Mobile设备上,针对Windows Mobile设备及Windows CE .NET操作系统设计了.NET Compact Framework(以下简称.NET CF)。而Visual Studio .NET 2003正是开发.NET CF应用程序的最佳IDE。在Visual Studio .NET 2003的安装中默认集成了.NET CF 1.0,同时提供了Pocket PC 2002的开发模板,可以直接用来开发Pocket PC 2002应用程序。

  您也可以选择Visual Studio 2005作为开发工具,目前最高版本为Beta 1 Refresh。在Visual Studio 2005中,默认提供了Pocket PC/Smartphone 2003 SE(第二版)的开发模板,同时将Pocket PC 2003 SE开发使用.NET CF版本升级到2.0 (beta)。

  安装eVC (可选)

  以上环境已经完全可以基于.NET CF开发Windows Mobile应用程序。但如果您想使用C/C++语言来进行native开发,或者想在Windows Mobile设备上开发COM组件及应用,那么可以选择eVC作为开发工具。目前eVC的最高版本为4.0 + SP4,请确保安装了最新的补丁包。

  也许您会问:既然已经有了Visual Studio .NET环境,为什么还要使用eVC作为开发工具呢?这主要是因为,当前的.NET CF功能相对而言还很不完整,有很多Windows CE .NET操作系统的核心功能没有被封装入.NET CF,如:加密/解密、网络底层通讯、COM互操作、RAPI等等。为了完成上述操作,我们或者使用平台调用(P/Invoke)以托管方式开发,或者使用eVC直接针对系统底层进行native开发。对于COM互操作,目前.NET CF还不提供COM互操作(Interop)机制,只能使用eVC进行C/C++ COM开发。好消息是,在.NET CF 2.0中将提供功能强大的COM互操作特性支持,同时也将在Visual C++ 2005环境中同时提供managed及native开发功能,这样所有的开发工作将完全整合在Visual Studio 2005同一环境中。

  安装Pocket PC/Smartphone 2003 SDK

  为了开发Pocket PC 2003或Smartphone 2003应用程序,您还需要安装Pocket PC 2003 SDK或Smartphone 2003 SDK。值得注意的是,这两款SDK中所包含的模拟器均为英语环境,如果您想使用简体中文环境的模拟器,请去微软网站上单独下载。 如果您使用Visual Studio 2005开发Windows Mobile应用程序,则不需要单独安装相应的SDK,因为SDK已经被默认集成至了Visual Studio 2005环境中。

  SQL Server CE (可选)

  这是Pocket PC上推荐使用的嵌入式数据库产品,它与SQL Server桌面版之间可以实现良好的数据同步及互操作,目前正式版的最新版本为2.0。在SQL Server 2005 Beta 2测试版中,包含有SQL Server CE 2.0的升级版本SQL Server 2005 Mobile Edition——不过该版本目前只支持Pocket PC 2003系统。预计SQL Server Mobile Edition在下一个版本中才能提供对Smartphone的支持。

ActiveSync环境搭建

  在完成了上述开发环境的搭建之后,您就可以在Visual Studio .net中开发和调试应用程序,并在设备/模拟器中进行部署。但是,如果您还需要进一步执行下述操作,那么请按本节所述继续搭建ActiveSync环境。可能的执行操作包括(但不限于):

   向设备/模拟器中复制文件

   从设备/模拟器中删除文件

   与设备/模拟器同步数据

   开发和调试包含RAPI (Remote API)功能的应用

   ……

  安装ActiveSync

  ActiveSync是一款管理 Windows Mobile设备连接、与PC进行数据同步的工具。如果您开发时使用的是真实设备,则最好事先安装ActiveSync使之与PC机连接。如果您使用的是模拟器,则除了安装ActiveSync以外,还需要安装下述工具。

  安装Connect Emulator with ActiveSync

  如果您使用的是模拟器软件,除了安装ActiveSync外,还必须安装Connect Emulator with ActiveSync这款工具软件。它将使您可以直接通过ActiveSync连接到模拟器上。

   辅助工具介绍

  除了上述基本开发工具以外,在 Windows Mobile开发社区中还存在着大量的辅助工具,包括应用程序框架、工具、控件等等。其中有一些由于定位准确、制作优良、使用方便,已经成为Windows Mobile开发不可或缺的好助手。以下列出其中的一部分,更多的还存在于Windows Mobile开发者社区及 互联网上,等待着您去发现。

  OpenNETCF.org Smart Device Framework

  由几位长年活跃于Windows Mobile开发者社区的MVP共同开发的OpenNETCF.org Smart Device Framework (以下简称为SDF),几天前刚刚获得了Pocket PC Magazine评出的2004年度最佳.NET开发框架大奖。熟悉SDF的开发者都会认为,对于这一奖项,OpenNETCF的确当之无愧,因为SDF几乎已经成了Windows Mobile开发者不可或缺的工具。他们对.NET CF的不足给出了及时的弥补,在SDF中,您可以找到Configuration、 XML Serialization、 Notification、Interop Services、WSE 2.0等一系列.NET CF当前版本尚未提供的功能,以及诸如ListBoxEx等优秀的控件。更值得一提的是,SDF是一项完全免费的开源项目。这几位MVP为整个Windows Mobile开发者社区所做的贡献也许真的无法用金钱来衡量。

   下载地址:http://www.opennetcf.org。

  Windows Mobile Developer Power Toys

  这是微软继Pocket PC/Smartphone 2003 SDK之后为开发人员提供的另一套开发辅助工具集。其中包含不少非常值得一用的优秀工具,如:

   ActiveSync Remote Display:把连接在PC上的智能设备影像通过PC屏幕放大显示

   CECopy:以命令行的方式向所连接的智能设备传输文件

   Hopper:用于Pocket PC 2003的用户输入压力测试工具

   PPC Command Shell:用于Pocket PC 2003的命令行工具

   TypeIt:用于Smartphone 2003的辅助文字输入工具

   ……

  Mobile Application Development Toolkit 2004

  这是微软近期推出的Windows Mobile开发工具及资料集,其中包含上述所有产品及工具,以及一系列相关的文档、教程及参考资料。

   结束语

  好了,对于如何搭建Windows Mobile的开发环境就介绍到这里了。可以肯定地说,随着微软公司支持力度的增加和Windows Mobile开发者社区的成熟,Windows Mobile开发将面临越来越有利的良好环境。

我从事Windows Mobile开发半年多了,这半年很努力,收获也很多。对于当初连Windows是基于消息机制都不知道的我来说,起点可以说是0。之所以写这篇文章,是想和大家分享我的经验,能够为那些初学者提供一些儿帮助。未来我工作和学习的重点将放在用户界面和多媒体开发上。欢迎和我交流,我的QQ是:3423 67 776。

言归正传,先来看看微软在操作系统方面的产品,桌面操作系统大体的历程:
MS-DOS
Windows 1.0
Windows 2.0
Windows 3.0
Windows NT 3.1
Windows 3.2
Windows 95
Windows NT 4.0(发布同一年——1996年,11月份发布Windows CE 1.0)
Windows 98
Windows ME
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows 7
关于桌面操作系统发展史有很多有意思的事情,在此略过。(关于以后的文章中我总结一下《Windows Internals》读书笔记。)

嵌入式操作系统有:
Windows CE 1.0
Windows CE 2.0
Windows CE 3.0(改名为Windows for Pocket PC,简称Pocket PC)
Windows CE 4.0(即Windows CE.Net)
Windows CE 5.0(开放250万行源代码)
Windows Embedded CE 6.0(2006年11月推出,在内核方面改进了很多,比如内存管理等。并且共享100%内核源码。)
image

image
之后微软宣布将Windows Embedded CE
Windows Embedded StandardWindows XP Embedded
Windows Embedded EnterprisePOSReady( next generation of Windows Embedded for Point of Service)、
Windows Embedded NavReadyWindows Embedded Server组成Windows Embedded系列产品。

基于Windows CE操作系统的有:

网络投影仪、网络多媒体设备、车载计算机、电视机顶盒、生产在线的控制设备、公共场所的信息站等等,有些设备甚至没有任何人机界面。微软针对不同嵌入式设备推出不同定制的Windows CE内核,比如我们这里讲的Windows Mobile操作系统,它是专门针对智能手机的,在Windows CE内核基础上添加了智能手机所具有的功能和界面,还比如前段时间我看到微软推出针对MP4的专用操作系统。(关于Windows CE/Windows Mobile内核方面知识在此略过,我会在以后的文章中总结。)

现在让我们看看Windows Mobile操作系统的发展史:
image

Windows Mobile 6.0是基于Windows CE 5.0内核,所以内存管理方面跟Windows CE 5.0是一样的,Windows Mobile 7.0将采用Windows CE 6.0内核。

开发工具(第1、3两项需要向微软购买,如果仅仅是学习第4项你下个试用版就可以了。)

1.Platform Builder for Windows Mobile(注意和Windows CE版本的区别),在定制内核、内核调试(另外可以借助很多PB的插件)等操作中,它将是一个得力的助手。

2.Windows Mobile 6 Professional SDK(或者Standard版本的,这里仅仅提供Professional版本),在安装完Visual Studio之后安装Windows Mobile 6 Professional SDK Refresh.msi,然后安装中文包:Windows Mobile 6 Professional Images (CHS).msi。提供了你开发所需要的基本接口,和调试用的模拟器等。另外其它的头文件和Lib库等文件你可能需要在AKU里面查找。

3.Adaptation Kit Update(AKU),微软更新Windows Mobile的方式。来看看维基的解释:
"It is a collection of updates, fixes and enhancements to the tools delivered to hardware device manufacturers to create or update devices based on a specific platform.”更多

4.Visual Studio 2005/2008(有很多提高开发效率的插件,比如Visual Assist X),VS自带的工具,如下图,都是很有用的。
clip_image002

5.ActiveSync,不管是真机还是模拟器,如果想与PC同步(比如手机通过PC来上网),需要使用这个工具。

6.SourceInsight(驱动开发常用的工具,管理、编辑代码很方便。)

7.在如内存泄漏等错误查找方面有很多专门的工具,比如Application Verify等。(请各位看官补充一下:))

整体开发流程

主要分为:硬件、Driver、RIL、应用程序。(在以后的文章中详细总结)

应用程序开发技术

语言:C/C++(Native Code) VS C#/VB/…(Managed Code)

选择什么开发方式就选择什么语言,选择Managed Code,即在.Net CF下开发,但是实现有些功能你需要P/Invoke Win32 DLL。比如在CodeProject上的一个使用C#编写的,在Windows Mobile上运行的iPhone界面程序,就调用了GDI API函数AlphaBlend来实现半透明。请看

关于本地代码开发和提高代码开发的比较有很多资料,这里不详细介绍了,它们的PK是开发效率和运行效率上面的PK。其实在一个项目中它们可能都是需要的。

.Net CF
是微软.NET Framework 的子集合,专为Mobile Device上的Windows CE平台系列提供应用程序开发的支持。目前.NET Compact Framework最新版本为3.5,可运行在Windows CE 6.0以及Windows Mobile 6.0系统中。更多

Win32
我们团队用的最多的,开发效率低,直接使用系统的API,程序的运行效率比较高。因为Windows Mobile编程继承了Windows桌面编程风格,所以学习这方面知识你可以阅读《Windows 程序设计(第5版)》、《Windows核心编程(第5版)》等书籍。
clip_image002[7]

MFC
采用的倒是不多,简单的界面就直接编写个Win32应用程序,复杂一点的界面可以使用WTL或者使用.Net CF(第三方OpenNETCF提供更多的扩展)进行托管开发。
MFC对Win32的封装跟WTL很多地方是相似的,封装的机制值得学习,关于这方面的基础视频推荐:《孙鑫C++视频》。

COM
扩展微软自带的应用程序,比如IE、Windows Media Player等,需要使用COM技术。
不单单如此,微软的技术很多都是构建于组件技术的,所以值得深入学习,推荐《COM技术内幕》(侯捷和潘爱民都有翻译)。

ATL
Active Template Library(活动模板库),是一个以C++模板技术的类的集合,帮助你更方便的使用COM,创建ActiveX等。推荐阅读深入解析ATL(第2版)维基更多介绍

WTL
是一个用于研发的面向对象的C++模板函数库,它主要被开发作为MFC的轻量化替代品,以ATL函数库为基础。
一个使用WTL和使用MFC生产的应用程序的简单比较:更多

Version

Size (in KB on disk)

MFC Debug

2030

MFC Release

212

WTL Debug

420

WTL Release

56

我们再来看看Windows Mobile 6.5及以后带给我们开发人员的好东西

用户界面(静态的、动态的和可交互的)一直是开发中的难点,怎样提高用户体验一直是开发中不断挖掘的东西。以下两个技术就是为此而生的:

Silverlight for mobile

Q: What is Silverlight?
A: Microsoft Silverlight powers rich application experiences and delivers high quality, interactive video across the Web and mobile devices through the most comprehensive runtime available on the Web.
Built to integrate with Microsoft Servers, Developer and Designer Tools and supported by a thriving partner ecosystem, the Silverlight solution accelerates the results of compelling experiences through powerful technology.

Q: How does Silverlight for mobile integrate with the standards-based Web?
A: Silverlight for mobile fully integrates with the standards-based Web technologies. On the client side, there is seamless DOM integration and bi-directional integration between Silverlight and JavaScript. On the server side, Silverlight can communicate with any standards-based server side technology including REST, POX, SOAP, and more.
目前Silverlight for mobile还在开发中,让我们期待一下吧。

Widgets

在Mobile上,它吸引我的地方在于它可以仅仅做成一个独立的基于网络交互的应用程序,它使用的技术就像我当初写网页用的技术一样:XHTML、CSS、AJAX、JavaScript,这相当爽的啊。那是在Today界面上编写一个天气预报的插件那是多么的方便啊,想想现在得用C++写,实属没办法。请看

A good way to think of a Windows Mobile Widget is as a “Portable chunk of the web” or just basically a rich internet application. Widgets are written using all the web technologies we know and love (HTML, CSS, AJAX, JavaScript) and, since they are powered under the covers by our new internet browser, they have full access to flash and other ActiveX controls available on the device (Like MediaPlayer).

Widgets最初源于苹果电脑的一个插件工具——Konfabulator,现在W3C发布了关于Widget的标准草案。请看

学习和参考资料

[1].Windows Mobile 6.0/6.5/7.0 Documentation(最主要的资料,如需要可以联系我,仅供学习之用。)

在你安装的Windows Mobile 6 Professional SDK目录下,有很多不错的Samples,初学者应该多阅读这里的代码:
clip_image002[9]
里面的htm文件已经帮你归类了,比如:
clip_image002[11]
你到论坛上面问的一些简单问题在这里都能找到答案。

[2].Microsoft WebCast开发资料(包括视频、PPT和示例代码,这是个好东西,我喜欢。你可以使用ireaper小程序方便的下载和管理这些资料。):
clip_image002

[3].CSDN Windows Mobile论坛

[4].MSDN Windows Mobile论坛

[5].Windows Mobile中国官方网站

[6].CodeProject(好东西啊)

[7].维基百科嵌入式系统介绍

[8].其它资源请见施炯的博客:Windows Mobile Jump Start Guide

作者: 王克伟
出处: http://wangkewei.cnblogs.com/
版权声明: 本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任的权利。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值