WindowsMobile开发常见问题集(转载)
(一)
1、Q:创建智能设备的应用程序应该选择哪种类型的项目?
A:在VisualStudio选择新项目对话框VisualC#或者VisualBasic项目类型,选择智能设备模板,然后选择相应的设备SDK,最后选择“DeviceApplication”,可以创建移动设备应用程序。
2、Q:托管代码与本地代码有哪些区别?
A:托管代码是指使用.NETCompactFramework可执行文件编译开发的程序代码IL,需要执行.NET运行环境。本地代码指C 可执行文件被编译成和CPU可以直接操作与指令集相关的机器代码。
3、Q:能不能简单介绍一下?Magneto里面对OTA和MMS的支持?
A:Magneto对OTA有很好的支持,SDK在文档的通信部分,有针对性OTA特别介绍。MMS应用程序基本上是由第三方开发的,因为MMS是基于WAP协议的,而Magneto本身对WAP支持也很好,具体协议也可以在SDK在文档中找到。
4、Q:请问用 VisualBasic.NET 开发PDA数据库程序能不能使用ADO.NET?
A:VisualBasic.NET开发PDA数据库不需要引用System.data.oledb,只需要引用System.Data.SqlServerCe命名空间就可以了。该命名空间中的数据库操作类和ADO.NET是基本一致的。可以用它们来开发针对SQLServerCE的应用程序。
5、Q:在VisualC++2005中,可以使用.NetCompactFramework吗?
A:不能,现在.NETCompactFramework只支持C#和VB.NET,而不支持C++/CLI。但是在VS.NET2005中可以用C++来开发Native代码来支持移动设备。
6、Q:从什么地方可以得到Smartphone开发环境?
A:Smartphone的SDK可以在微软网站上找到,而VisualStudio2005Beta2可以通过参加微软活动的方式获得。MEDC2005的参加者都获得了VS.NET2005和WindowsMobile5SDK的开发光盘。
7、Q:托管性的代码执行效率怎么样?和使用VisualC++编写的代码相比较。
A:托管代码的执行效率肯定不如本地代码高,但是托管代码也有一些好处是无法取代的。
8、Q:是否可以使用VisualStudio.NET2003来开发能够运行在WindowsMobile2005上的应用程序?
A:首先更正一下,WindowsMobile最新一代的操作系统叫做WindowsMobile5,而不是WindowsMobile2005。是的,使用VS.NET2003开发的应用程序是可以在WindowsMobile5上正常运行的,因为WindowsMobile5ROM中内置了.NETCompactFramewrok1.0SP3。
9、Q:PDA上不能用PocketAccess么?SQLCE太大了。
A:可以使用PocketAccess来开发WindowsMobile上的应用程序。可以采用C++调用OLEDB或者ADOCE的方式来访问PocketAccess数据库。
10、Q:VisualStudio2005的新功能是否只在WindowsMobile5里受到支持,2003是否支持?
A:新功能分两个部分,一部分是.NETCompactFramework2.0中提供的的新功能,这部分的功能可以被WindowsMobile2003支持,但必须安装.NETCompactFramework2.0;而另一部分是WindowsMobile5的特有功能。.NETCompactFramework2.0和WindowsMobile5开发文档的“What’sNew”部分,分别描述了这两方面的新特性。
11、Q:请问如何在模拟器里面配置连接到移动网络?
A:模拟器如果需要连接移动网络的话,必须有专门的硬件提供支持。可以在开发PC的串口上连一个GPRS的模拟器,SDK文档中对此有专门的说明。
12、Q:SQLCE可以像PocketAccess那样仅使用一个文件就能运行么?是否需要像PC上那样安个服务器才能使用?
A:不会的,只需要在WindowsMobile上安装SQLServerCE的支持库,也就是就是一些DLL文件。而SQLServerCE的库文件是一个单独的文件,不需要安装一个服务器。
13、Q:开发好的程序通过什么方式部署到手机上?对手机有什么要求?
A:开发的程序需要打包成cab文件部署到手机上。除了通过ActiveSync安装外,还可以通过网络下载、存储卡运行等方式来安装应用程序。对手机的要求是,必须和开发程序的目标平台相兼容。比如为WindowsMobile5开发的应用程序,可能就没办法很好地运行在WindowsMobile2003平台上。
14、Q:在模拟器上面开发程序,和真实环境有区别么?需要注意一些什么?
A:模拟器的仿真度十分高,WindowsMobile5的模拟器甚至可以支持ARM指令,所以基本不会遇到兼容性的问题。但是对于一些需要连接外部设备的应用场景,比如前边说的无线网络,还有GPS设备等,就需要用到实际设备了。
15、Q:当开发国际化应用程序时,应该特别注意哪些方面?
A:对于国际化的应用程序,.NET本身就已经提供了非常好的支持。可以把用户界面的文字保存在相应的资源文件中,然后由应用程序判断操作系统的语言版本来调用相应的文字。
16、Q:用.NET开发PocketPC程序需要考虑设备具体使用的是哪种CPU吗?
A:不必。无论是在虚拟机上的x86指令集,还是实际设备上的ARM指令集,对.NETCompactFramework程序的运行来说都一样。
17、Q:WindowsMobile5是否支持通过语音控制新的开发程序?
A:现在还不支持。
18、Q:可以在vwd2005bata2中开发PocketPC程序吗?PocketPC是否具有浏览器?
A:可以,PocketPC平台是内置浏览器的。
19、Q:VisualStudio2005的Mobile开发,支持Mobile2003的设备吗?
A:支持,VS2005本身就自带WindowsMobile2003的SDK。
20、Q:WindowsMobile5.0forSmartphone较之前的版本有何明显的区别?对于测试这一领域,我们需要注意些什么?
A:WindowsMobile5的Smartphone平台更多的变化是在API层面,比如对数据库的支持、对GPSAPI的支持等,WindowsMobile5SDK文档中对此有详细地说明。
21、Q:对开发来说CDMA和GPRS的数据传输是透明的吗?
A:对于软件开发来说数据传输是透明的,CDMA和GPRS对于上层应用程序来说,只要支持HTTP协议或者TCP/IP协议就可以进行数据传输的操作。
22、Q:VisualStudio.NET能否支持Nokia的S60系列系统开发?
A:可以,VisualC++能支持NokiaS60的开发。
23、Q:PocketPC与Mobile开发的主要区别在哪里?
A:WindowMobile是微软公司基于WindowsCE.NET的一个平台。它包含PocketPC和Smartphone两个版本。
24、Q:SDE从哪里可以下载?PocketPC2005的模拟器可以从哪里下载?
A:SDE是早期用来开发移动设备程序的VS扩展,目前网上似乎很难找到。其实不用安装它,安装所需版本的PocketPC或者Smartphone的SDK即可。各个版本的WindowsMobile开发的SDK和模拟器的地址可以从这篇Blog上下载(http://twodays.cnblogs.com/archive/ 2005/06/30 /184107.htm)。
25、Q:.NETCompactFramework2.0能装在WindowsMobile2003上吗?
A:可以。.NETCompactFramework2.0必须手动安裝到WindowsMobile2003的机器上。
26、Q:请问有没有好的WindowsMobile编程的网站或者论坛?
A:OpenNETCF.org、www.devbuzz.com、www.codeproject.com、www.msdn.com/mobility/、www.pocketpcdn.com
27、Q:WindowsMobile2003上的.NETCompactFramework能升级到.NETCompactFramework2.0吗?
A:可以。.NETCompactFramework2.0必须手动安裝到WindowsMobile2003的机器上。
28、Q:请问编写WML文件与使用.NETCompactFramework进行开发有什么联系和区别?
A:WML是能够利用WAP浏览器进行浏览的文件,是一种基于Web的开发方式。.NETCompactFramework是在设备上运行的程序,是基于应用的开发方式。
29、Q:在使用.NETCompactFramework1.0进行开发时,用EVC直接调用Native代码与使用C#通过P/Invoke在性能上有什么差别?在.NETCompactFramework2.0上,用C++直接调用和用C#通过P/Invoke又如何呢?
A:用EVC調用NativeAPI的效率,会比使用.NETCompactFramework通过P/Invoke调用NativeAPI要高,这是.NETCompactFramework本身的特性。在从托管代码中调用NativeAPI时,其内部会进行一些额外的类型转换动作,这会导致效率的降低。
30、Q:有没有支持显示HTML文本的控件?
A:WebBrowser控件可以用于HTML文本。
31、Q:CAB安装后会在PocketPC上自动生成“卸载程序”,如何制作安装包,才能不自动产生“卸载程序”?
A:利用VS2005建立SmartDeviceCabProject,在SolutionExplorer的CabProject上点击鼠标右键选择Property,即可看到有一个选项为NoUninstall,默认为False,改为True就可以了。
32、Q:OpenNETCF能运行在.NETFramework1.1环境下吗?其中的控件可以与.NETFramework1.1控件混合使用吗?怎样在VisualStudio.NET2003中加入OpenNETCF控件?
A:当初在设计NETCompactFramework1.0/1.1时,由于考虑到移动设备的资源有限,所以有些原本.NETFramework1.1中已经提供的类和控件就被删除了,OpenNETCFSmartDeviceFramework主要是针对.NETCompactFramework1.0/1.1中没有的功能,开发出来的类似的类型和额外的功能,以弥补.NETCompactFramework1.0/1.1不足之处。这套Framework主要是供.NETCompactFramework程序开发所用,除了少部份针对PC与PocketPC的同步功能所编写的类之外,大部分都是在.NETCompactFramework上执行的,一般不支持.NETFramework。OpenNETCF的SmartDeviceFramework安装完毕之后,可以在VS2003左侧的工具箱中看到OpenNETCF的控件,可以直接拖放来使用。
二)
1、Q:请问如何才能保证应用程序能够及时地释放系统资源?
A:由于.NETCompactFramework所运行的移动设备,受限于CPU、内存、电源,因此其中的GarbageCollection时经过调整的,垃圾回收的速度比.NETFramework更快。通过调用Dispose()方法,可以立即释放掉对象所占用的非托管资源。
2、Q:在VisualStudio中可以定义一个所有文件都可以使用的宏吗?比如:#defineAA,要求在所有的.cs文件中都可以使用#ifAApublicclassA()#elsepublicclassB();
A:可以。在VS2005的解决方案资源管理器中,用鼠标右键单击项目,选择其属性。在属性对话框的Build页中,可以找到conditionalcompilationsymbol,在其中输入AA,即可在该项目的所有C#源代码文件中使用这个符号。
3、Q:可以将Smartphone应用程序转换为PocketPC应用程序吗?
A:可以。在.NETCompactFramework2.0中,只要您没有用到某些特殊的API,PocketPC应用程序与Smartphone程序是可以互相转换的,只需要在控件上做些调整即可。
4、Q:.NetFramework2.0有没有对Mediacoder/decoder的支持?开发第三方的媒体播放程序可以不依赖.NetCF2.0吗?
A:.NETCompactFramework2.0本身可以开发Direct3DMobile的应用程序。也可以在VS2005中以C++开发NativeCode的媒体播放程序,而无须依赖.NETCompactFramework2.0。
5、Q:使用.Net开发的智能设备程序是否比用C语言开发的程序效率低很多?
A:使用.NET开发的程序会比使用C语言开发的本地程序要慢一些,不过对于一般的应用软件来说,下率不会差太多,除非是需要实时处理硬件或I/O的程序,必须要使用C语言进行开发之外,一般的应用程序用.NETCompactFramework开发即可,因为这样可以获得最好的灵活性和可移植性。
6、Q:用托管C++开发的应用程序执行效率会不会比用C#开发的应用程序高?
A:不会。由於托管C++与C#源代码在经过编译之后,都将成为IL代码,由.NETCompactFramework来执行,因此在效率上不会有差别。
7、Q:请问.NETCompactFramework2.0对于使用不同CPU的移动设备支持好吗?.NETCompactFramework2.0在GSM应用方面有没有增强?
A:.NETCompactFramework具有WindowsMobile 标签: k2an继电器