Windows Mobile 開發常見問題集(一)
1、Q:新建專案的時候選擇哪個專案型別才能建立智慧裝置的應用程式?
A:在Visual Studio的新建專案對話方塊中選擇Visual C#或者Visual Basic專案型別,選擇智慧裝置模板,然後再選擇相應的裝置SDK,最後選擇“Device Application”,就可以建立一個移動裝置的應用程式了。
2、Q:託管程式碼與原生代碼有哪些區別?
A:託管程式碼是指使用.NET Compact Framework開發的程式程式碼,可執行檔案被編譯成IL,執行時需要有.NET的執行時環境。而原生代碼指用C++等語言開發的程式程式碼,可執行檔案被編譯成與CPU指令集有關的機器碼,可以直接執行。
3、Q:能不能簡要介紹一下Magneto裡面對OTA和MMS的支援?
A:Magneto對OTA有很好的支援,SDK文件的通訊部分中,有針對OTA的專門介紹。MMS的應用程式基本都是由第三方開發的,因為MMS是基於WAP協議的,而Magneto本身對WAP的支援也很好,具體的協議也可以在SDK文件裡找到。
4、Q:請問用Visual Basic .NET開發PDA資料庫程式能不能使用ADO.NET?
A:Visual Basic .NET開發PDA資料庫不需要引用System.data.oledb,只需要引用System.Data.SqlServerCe名稱空間就可以了。該名稱空間中的資料庫操作類和ADO.NET是基本一致的。可以用它們來開發針對SQL Server CE的應用程式。
5、Q:在Visual C++2005中,可以使用.Net Compact Framework嗎?
A:不能,現在.NET Compact Framework只支援C#和VB.NET,而不支援C++/CLI。但是在VS.NET 2005中可以用C++來開發Native程式碼來支援移動裝置。
6、Q:從什麼地方可以得到Smartphone開發環境?
A:Smartphone的SDK可以在微軟網站上找到,而Visual Studio 2005 Beta 2可以通過參加微軟活動的方式獲得。MEDC 2005的參加者都獲得了VS.NET 2005和Windows Mobile 5 SDK的開發光碟。
7、Q:託管性的程式碼執行效率怎麼樣?和使用Visual C++編寫的程式碼相比較。
A:託管程式碼的執行效率肯定不如原生代碼高,但是託管程式碼也有一些好處是無法取代的。
8、Q:是否可以使用Visual Studio .NET 2003來開發能夠執行在Windows Mobile 2005上的應用程式?
A:首先更正一下,Windows Mobile最新一代的作業系統叫做Windows Mobile 5,而不是Windows Mobile 2005。是的,使用VS.NET 2003開發的應用程式是可以在Windows Mobile 5上正常執行的,因為Windows Mobile 5 ROM中內建了.NET Compact Framewrok 1.0 SP3。
9、Q:PDA上不能用Pocket Access麼?SQL CE太大了。
A:可以使用Pocket Access來開發Windows Mobile上的應用程式。可以採用C++呼叫OLEDB或者ADOCE的方式來訪問Pocket Access資料庫。
10、Q:Visual Studio 2005的新功能是否只在Windows Mobile 5裡受到支援,2003是否支援?
A:新功能分兩個部分,一部分是.NET Compact Framework 2.0中提供的的新功能,這部分的功能可以被Windows Mobile 2003支援,但必須安裝.NET Compact Framework 2.0;而另一部分是Windows Mobile 5的特有功能。.NET Compact Framework 2.0和Windows Mobile 5開發文件的“What’s New”部分,分別描述了這兩方面的新特性。
11、Q:請問如何在模擬器裡面配置連線到行動網路?
A:模擬器如果需要連線行動網路的話,必須有專門的硬體提供支援。可以在開發PC的串列埠上連一個GPRS的模擬器,SDK文件中對此有專門的說明。
12、Q:SQL CE可以像Pocket Access那樣僅使用一個檔案就能執行麼?是否需要像PC上那樣安個伺服器才能使用?
A:不會的,只需要在Windows Mobile上安裝SQL Server CE的支援庫,也就是就是一些DLL檔案。而SQL Server CE的庫檔案是一個單獨的檔案,不需要安裝一個伺服器。
13、Q:開發好的程式通過什麼方式部署到手機上?對手機有什麼要求?
A:開發的程式需要打包成cab檔案部署到手機上。除了通過ActiveSync安裝外,還可以通過網路下載、儲存卡執行等方式來安裝應用程式。對手機的要求是,必須和開發程式的目標平臺相相容。比如為Windows Mobile 5開發的應用程式,可能就沒辦法很好地執行在Windows Mobile2003平臺上。
14、Q:在模擬器上面開發程式,和真實環境有區別麼?需要注意一些什麼?
A:模擬器的模擬度十分高,Windows Mobile 5的模擬器甚至可以支援ARM指令,所以基本不會遇到相容性的問題。但是對於一些需要連線外部裝置的應用場景,比如前邊說的無線網路,還有GPS裝置等,就需要用到實際裝置了。
15、Q:當開發國際化應用程式時,應該特別注意哪些方面?
A:對於國際化的應用程式,.NET本身就已經提供了非常好的支援。可以把使用者介面的文字儲存在相應的資原始檔中,然後由應用程式判斷作業系統的語言版本來呼叫相應的文字。
16、Q:用.NET開發Pocket PC程式需要考慮裝置具體使用的是哪種CPU嗎?
A:不必。無論是在虛擬機器上的x86指令集,還是實際裝置上的ARM指令集,對.NET Compact Framework程式的執行來說都一樣。
17、Q:Windows Mobile 5 是否支援通過語音控制新的開發程式?
A:現在還不支援。
18、Q:可以在vwd2005 bata2中開發Pocket PC程式嗎?Pocket PC是否具有瀏覽器?
A:可以,Pocket PC平臺是內建瀏覽器的。
19、Q:Visual Studio 2005的Mobile開發,支援Mobile 2003的裝置嗎?
A:支援,VS 2005本身就自帶Windows Mobile 2003的SDK。
20、Q:Windows Mobile 5.0 for Smartphone較之前的版本有何明顯的區別?對於測試這一領域,我們需要注意些什麼?
A:Windows Mobile 5的Smartphone平臺更多的變化是在API層面,比如對資料庫的支援、對GPS API的支援等, Windows Mobile 5 SDK文件中對此有詳細地說明。
21、Q:對開發來說CDMA和GPRS的資料傳輸是透明的嗎?
A:對於軟體開發來說資料傳輸是透明的,CDMA和GPRS對於上層應用程式來說,只要支援HTTP協議或者TCP/IP協議就可以進行資料傳輸的操作。
22、Q:Visual Studio .NET能否支援Nokia的S60系列系統開發?
A:可以,Visual C++能支援Nokia S60的開發。
23、Q:Pocket PC與Mobile開發的主要區別在哪裡?
A:Window Mobile是微軟公司基於Windows CE.NET的一個平臺。它包含Pocket PC和Smartphone兩個版本。
24、Q:SDE從哪裡可以下載?Pocket PC 2005的模擬器可以從哪裡下載?
A:SDE是早期用來開發移動裝置程式的VS擴充套件,目前網上似乎很難找到。其實不用安裝它,安裝所需版本的Pocket PC或者Smartphone的SDK即可。各個版本的Windows Mobile開發的SDK和模擬器的地址可以從這篇Blog上下載(http://twodays.cnblogs.com/archive/2005/06/30/184107.htm)。
25、Q:.NET Compact Framework 2.0能裝在Windows Mobile 2003上嗎?
A:可以。.NET Compact Framework 2.0必須手動安裝到Windows Mobile 2003的機器上。
26、Q:請問有沒有好的Windows Mobile程式設計的網站或者論壇?
27、Q:Windows Mobile 2003上的.NET Compact Framework能升級到.NET Compact Framework 2.0嗎?
A:可以。.NET Compact Framework 2.0必須手動安裝到Windows Mobile 2003的機器上。
28、Q:請問編寫WML檔案與使用.NET Compact Framework進行開發有什麼聯絡和區別?
A:WML是能夠利用WAP瀏覽器進行瀏覽的檔案,是一種基於Web的開發方式。.NET Compact Framework是在裝置上執行的程式,是基於應用的開發方式。
29、Q:在使用.NET Compact Framework 1.0進行開發時,用EVC直接呼叫Native程式碼與使用C#通過P/Invoke在效能上有什麼差別?在.NET Compact Framework 2.0上,用C++直接呼叫和用C#通過P/Invoke又如何呢?
A:用EVC呼叫Native API的效率,會比使用.NET Compact Framework通過P/Invoke呼叫Native API要高,這是.NET Compact Framework本身的特性。在從託管程式碼中呼叫Native API時,其內部會進行一些額外的型別轉換動作,這會導致效率的降低。
30、Q:有沒有支援顯示HTML文字的控制元件?
A:WebBrowser控制元件可以用於HTML文字。
31、Q:CAB安裝後會在Pocket PC上自動生成“解除安裝程式”,如何製作安裝包,才能不自動產生“解除安裝程式”?
A:利用VS 2005建立Smart Device Cab Project,在Solution Explorer的Cab Project上點選滑鼠右鍵選擇Property,即可看到有一個選項為NoUninstall,預設為False,改為True就可以了。
32、Q:OpenNETCF能執行在.NET Framework 1.1環境下嗎?其中的控制元件可以與.NET Framework 1.1控制元件混合使用嗎?怎樣在Visual Studio .NET 2003中加入OpenNETCF控制元件?
A:當初在設計NET Compact Framework 1.0/1.1時,由於考慮到移動裝置的資源有限,所以有些原本.NET Framework 1.1中已經提供的類和控制元件就被刪除了,OpenNETCF Smart Device Framework主要是針對.NET Compact Framework 1.0/1.1中沒有的功能,開發出來的類似的型別和額外的功能,以彌補.NET Compact Framework 1.0/1.1不足之處。這套Framework主要是供.NET Compact Framework程式開發所用,除了少部份針對PC與Pocket PC的同步功能所編寫的類之外,大部分都是在.NET Compact Framework上執行的,一般不支援.NET Framework。OpenNETCF的Smart Device Framework安裝完畢之後,可以在VS 2003左側的工具箱中看到OpenNETCF的控制元件,可以直接拖放來使用。