前段时间在工作机上装了Mac OS X,这主要是因为我最近需要开发iPhone应用程序。虽然Xcode,Objective C一定是开发iOS应用程序的主流,但是经过一番考虑,我还是决定尝试一下使用MonoTouch进行开发。Monotouch是Novell公司基于开源的Mono平台构建的一套iOS开发环境,使用MonoDevelop作为代码编写工具。不过目前的MonoDevelop较之Visual Studio可谓“萤火之光比皓月之明”,甚至还有无法输入中文的低级问题。因此,至今我所有在Mono上运行的代码其实都是用Visual Studio写的,这次自然也不例外。不过,这似乎并不是件非常直接的事情……
什么是MonotouchMono是由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:
在d出的对话框中输入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.1Mono和iOS SDK的安装过程十分普通,而MonoDevelop的安装方式对于windows用户可能有些特别。在加载了dmg文件以后,会d出这样一个界面:
根据提示,此时您只需要将MonoDevelop的图标拖至右侧目录中就可以了。随后,您便可以安装Monotouch了。Monotouch是商业产品,不过您可以免费下载它的试用版,无限期使用。不过试用版只能在模拟器上运行调试,如果需要在真机上运行测试、打包、甚至发布至AppStore,则需要购买授权。企业用户自不必说,Monotouch针对个人用户的授权费用399美金,如果您真有制作应用程序的好点子,那这点钱实在不算什么了。
总结以上是内存溢出为你收集整理的在Visual Studio中使用MonoTouch开发iOS应用程序(上):环境配置全部内容,希望文章能够帮你解决在Visual Studio中使用MonoTouch开发iOS应用程序(上):环境配置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)