在Visual Studio中使用MonoTouch開發iOS應用程序(上):環境配置

作者: 趙劼  發布時間: 2010-11-02 14:58  閱讀: 8467 次  推薦: 1   原文鏈接   [收藏]  
摘要:國內技術社區也有關于MonoTouch的內容,老趙將描述在虛擬機中安裝Mac OSX雪豹操作系統,以及利用Visual Studio開發MonoTouch應用程序的方式。

  前段時間在工作機上裝了Mac OS X,這主要是因為我最近需要開發iPhone應用程序。雖然Xcode,Objective C一定是開發iOS應用程序的主流,但是經過一番考慮,我還是決定嘗試一下使用MonoTouch進行開發。    MonoTouch是Novell公司基于開源的Mono平 臺構建的一套iOS開發環境,使用MonoDevelop作為代碼編寫工具。不過目前的MonoDevelop較之Visual Studio可謂“螢火之光比皓月之明”,甚至還有無法輸入中文的低級問題。因此,至今我所有在Mono上運行的代碼其實都是用Visual Studio寫的,這次自然也不例外。不過,這似乎并不是件非常直接的事情……

  什么是MonoTouch

  Mono是由Novell提供的.NET跨平臺執行環境,無論別人如何進行FUD,我使用下來對Mono的感覺很不錯,自認為也有足夠的理由來支持我的觀點,如今無論是微軟Mix大會還是社區類型的NDC 2010都有Mono的內容(尤其是后者)。在我看來,如果沒有嘗試過Mono就發表的猜忌就很難令人接受了。

  Mono使用的授權方案允許第三方基于它上構建商業應用程序,MonoTouch便是其中的典型(還有哪些?自己看吧)。 MonoTouch是Novell公司的產品,可以讓開發人員在.NET環境下開發iOS應用程序(包括iPhone 4和iPad),支持最新的iOS SDK 4.1。這樣.NET開發人員就可以利用現有的知識來開發iOS應用程序,如.NET 3.5中的絕大部分類庫以及C# 3.0。例如,之前有同事抱怨Android里的API沒法方便地使用SOAP協議(似乎iOS下也有不便),但是在MonoTouch中,一切的一切都是最常見的Add Web Services,或是用WCF的svcutil.exe便可直接生成代理。我們同樣可以復用大量.NET平臺下的開源類庫,只要基于MonoTouch重新編譯一遍就可以了。在NDC 2010中“深入MonoTouch”演講中便演示了在MonoTouch中使用Json.NET、FlickrNet及CoolStorage三套類庫的做法。

  除了.NET 3.5中的類庫之外,MonoTouch也提供了訪問iOS API(即Cocoa Touch) 的.NET接口(尤其是在UI方面)。在這方面MonoTouch不是一味地直接暴露出Cocoa Touch的功能,而是在一定程度上將它的API改寫為更傾向于.NET程序員的形式。例如UIView的Frame屬性為 System.Drawing.RectangleF類型,而不是Cocoa Touch中原本使用的CGRect。當然,尤其是UI方面,MonoTouch還是使用了傳統iOS應用程序的架構,包括它的MVC驅動方式。因此,即 使您使用MonoTouch,最好也要能夠看懂簡單的Objective C代碼,因為SDK提供的文檔和大量的示例都是用它來實現的。

  眾所周知,Mono使用JIT(Just-in-Time)編譯來執行IL代碼,JIT代表了在運行時動態生成原生代碼,但是iOS不允許這么做。 因此,MonoTouch實際上是使用了AOT(Ahead-of-Time)編譯方式,真正部署在機器上時已經是原生代碼了。此外,MonoTouch 還提供了一個Linker,它只會將SDK及我們自己編寫的代碼中,真正使用到的部分靜態鏈接至應用程序中,這削減了應用程序的體積。從中我們可以看出, 使用MonoTouch開發出來的應用程序,其實和普通使用iOS SDK開發出的應用程序并沒有什么區別,都是完全獨立運行的。當然,這也是因為MonoTouch將一個Runtime塞入應用程序內部的關系,這會給應 用程序的體積帶來大約5MB的增長,壓縮后(也就是用戶真正需要下載的體積)大約是3MB。

  除了MonoTouch以外,用于Android開發的MonoDroid也已經進入了beta階段,已經向一些開發人員提供試用版本了。這意味著,在不久的將來,C#及.NET類庫將成為Windows Phone,iOS,Android三大移動平臺上的跨平臺開發工具。關于MonoTouch的更多消息,您可以關注NDC 2010上的相關演講。

  在Windows和Mac OS X中共享文件

  MonoTouch的開發工具是MonoDevelop和Interface Builder,后者用于編輯應用程序中的UI文件。不過編寫C#代碼的神器終歸是Visual Studio,即便是最簡單的Express版本在代碼編寫方面也勝出MonoDevelop很多,更別說是經過增強的高級版本了。因此,我打算使用Visual Studio編寫C#代碼,而使用Interface Builder開發UI界面。不過我們要做的第一件事情是在Windows和Mac OS X之間共享源文件。這里我繼續基于之前Win7 + VirtualBox + Snow Leopard的環境進行配置,您也可以使用相同的方法連接兩臺獨立的機器。

  由于Mac OS X是在虛擬機上,我選擇將源文件放在Windows里,并在Mac OS X上訪問。首先,我們在Windows上共享一個目錄,這里我將整個E盤共享給vbox賬號,取名為host-e,并賦予完全控制權限:

  然后在Mac OS X中打開Finder,在Go菜單中選擇Connect to Server:

  在彈出的對話框中輸入Windows的IP:

  點擊Connect,并在下一個對話框中輸入用戶名的密碼(注意這里需要包含機器名):

  點擊Connnet,此時對話框會列出這個賬號的共享內容:

  于是我們選擇host-e,并點擊OK。此時,您會在Finder的Shared欄目中訪問到共享的內容,其中的projects目錄是這里的關鍵:

  我將所有的項目都存放在e:\projects目錄中,接下來也不例外。為了方便起見,我在Mac OS X的home目錄下建立一個軟鏈接,指向共享中的projects目錄

ln -s /Volumes/host-e/projects ~/Projects

  此時我們就能在home目錄下看到Projects文件夾了,而在各種應用程序中,我們可以使用~/Projects來訪問其中的內容:

  自然,其他方式也沒有問題,您只要找到適合您自己的最合適的方式即可。例如,我現在提到的共享方式要求兩臺機器通過網絡互連,如果您無法實現這點,也可以借助如Dropbox這樣的同步工具,其實也非常方便。

  安裝MonoTouch

  要安裝MonoTouch,首先您必須安裝Mono,MonoDevelop,iOS SDK。我的配置是:

  • Mono 2.6.7
  • MonoDevelop 2.4
  • iOS SDK 4.1

  Mono和iOS SDK的安裝過程十分普通,而MonoDevelop的安裝方式對于Windows用戶可能有些特別。在加載了dmg文件以后,會彈出這樣一個界面:

  根據提示,此時您只需要將MonoDevelop的圖標拖至右側目錄中就可以了。

  隨后,您便可以安裝MonoTouch了。MonoTouch是商業產品,不過您可以免費下載它的試用版,無限期使用。不過試用版只能在模擬器上運行調試,如果需要在真機上運行測試、打包、甚至發布至AppStore,則需要購買授權。企業用戶自不必說,MonoTouch針對個人用戶的授權費用399美金,如果您真有制作應用程序的好點子,那這點錢實在不算什么了。

  【相關文章】:在Visual Studio中使用MonoTouch開發iOS應用程序(下):開發體驗

在Visual Studio中使用MonoTouch開發iOS應用程序(上):環境配置

1
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()