在Visual Studio中使用MonoTouch开发iOS应用程序(上):环境配置

简介:   前段时间在工作机上装了Mac OS X,这主要是因为我最近需要开发iPhone应用程序。虽然Xcode,Objective C一定是开发iOS应用程序的主流,但是经过一番考虑,我还是决定尝试一下使用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应用程序(上):环境配置

目录
相关文章
|
10天前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
32 9
|
6天前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!
|
9天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
8天前
|
iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第39天】在苹果的生态系统中,SwiftUI框架以其声明式语法和易用性成为开发者的新宠。本文将深入SwiftUI的核心概念,通过实际案例展示如何利用这一框架快速构建用户界面,并探讨其对iOS应用开发流程的影响。
|
11天前
|
JSON 前端开发 API
探索iOS开发之旅:打造你的第一个天气应用
【10月更文挑战第36天】在这篇文章中,我们将踏上一段激动人心的旅程,一起构建属于我们自己的iOS天气应用。通过这个实战项目,你将学习到如何从零开始搭建一个iOS应用,掌握基本的用户界面设计、网络请求处理以及数据解析等核心技能。无论你是编程新手还是希望扩展你的iOS开发技能,这个项目都将为你提供宝贵的实践经验。准备好了吗?让我们开始吧!
|
14天前
|
存储 数据可视化 Swift
探索iOS开发之旅:从新手到专家
【10月更文挑战第33天】在这篇文章中,我们将一起踏上一场激动人心的iOS开发之旅。无论你是刚刚入门的新手,还是已经有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技能。我们将从基础的iOS开发概念开始,逐步深入到更复杂的主题,如用户界面设计、数据存储和网络编程等。通过阅读这篇文章,你将获得成为一名优秀iOS开发者所需的全面技能和知识。让我们一起开始吧!
|
15天前
|
移动开发 Java Android开发
探索Android与iOS开发的差异性与互联性
【10月更文挑战第32天】在移动开发的大潮中,Android和iOS两大平台各领风骚。本文将深入浅出地探讨这两个平台的开发差异,并通过实际代码示例,展示如何在各自平台上实现相似的功能。我们将从开发环境、编程语言、用户界面设计、性能优化等多个角度进行对比分析,旨在为开发者提供跨平台开发的实用指南。
37 0
|
Web App开发 前端开发 数据库
《企业级ios应用开发实战》一1.2 iOS企业应用程序的架构
本节书摘来自华章出版社《企业级ios应用开发实战》一 书中的第1章,第1.2节,作者:杨宏焱,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1687 0
|
1月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
112 1
|
1月前
|
设计模式 安全 Swift
探索iOS开发:打造你的第一个天气应用
【9月更文挑战第36天】在这篇文章中,我们将一起踏上iOS开发的旅程,从零开始构建一个简单的天气应用。文章将通过通俗易懂的语言,引导你理解iOS开发的基本概念,掌握Swift语言的核心语法,并逐步实现一个具有实际功能的天气应用。我们将遵循“学中做,做中学”的原则,让理论知识和实践操作紧密结合,确保学习过程既高效又有趣。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你打开一扇通往iOS开发世界的大门。
下一篇
无影云桌面