转至:http://thinkpower.info/xamarin/cn/Article_01.aspx?idx=01#xamarin_top
应用程序发展的脚步,从来没有停过。从早期的Windows 应用程序,到网络时代的web 应用程序,再到近几年相当盛行的行动装置应用程序(Mobile Application),身为C#的开发人员与Visual Studio的使用者。Windows Phone与Windows Store App的开发是否已满足不了你了呢? 如果能够让你使用C#及Visual Studio 来开发iOS及Android的app。是否能再度唤醒你的开发魂? Xamain 正是为了这样的需求而誔生的framework.
-
- Windows 7 或更新的操作系统版本
- Visual Studio 2010 / 2012
- OS X Lion 或更新的操作系统版本
- Xcode IDE 以及 iOS SDK
-
- Windows 7 或更新的操作系统版本
- Java SDK
- Android SDK
- Xamarin.Android for Visual Studio
无论是在Windows或是MAC上安装Xamarin都相当简单,只要在 http://xamarin.com/download上填入名称及Email账号,便可以进行下载。而只要依照安装精灵点选下一步,就可以将Android SDK等相关组件装好.
Xamarin 是一个商业的Framework,但您可以完整试用30天,或是使用免费版本。但免费版本限制开发人员编译后的IL code大小不能超过32K,且无法使用Visual Studio进行开发(只能使用Xamarin提供的Xamarin Studio)。安装好Xamarin之后,需要注册一个Xamarin账号进行启动。
1。开启Visual Studio,点选工具=>Xamarin Account
2。若先前已经注册过Xamarin账号(请注意,Xamarin账号与先前下载所填的Email不同),请直接输入账号密码登入,若您是第一次使用,请申请新的Xamarin账号.
登入后便可以开始开发Android及iOS应用程序啰!!
使用Xamarin 开发Android应用程序可说是相当的方便,不仅支持在Visual Studio中使用拖曳的方式设计用户界面,还整合如AVD及SDK Manager等工具。废话不多说,开始我们在Visual Studio上的第1支Android程序吧~
1。在Visual Studio 中新增项目,在项目模板中,请展开C#节点,你会发现项目模板会多出Android及iOS类型的项目模板,我们在这个范例中选择”Android Application”,并在名称中输入"HelloDroid” (当然您可以改成任何您想要的名称)
2。项目建立后,您会发现工具栏中多出几个项目:
登入后便可以开始开发Android及iOS应用程序啰!说明如下(由左至右):
- 目标装置:可以选择将目前的项目部署到哪一个装置,默认的"Prompt for Device”则是会在开始除错/部署时,弹出窗口供用户选择。若有接上实体装置,也会出现在此选单中。
- 装置记录: 可以挑选装置并显示目前装置的活动记录。
- 开启Android 虚拟设备管理员(AVD),透过此管理员,您可以新增,开启或编辑Android仿真器
3。默认的项目中会内建一个Button控件并写着"Hello World,Click Me!”,开启专案下的Resources->Layout->Main.axml可以进行页面的设计。
4。而此范例的主要程序代码则是Activity1.cs,直接透过下图的批注来说明:
看到这样的程序代码,我想大家应该都不会感到陌生。笔者有一些学员跟我说,感觉跟开发Windows Form应用程序好像~~ Activity1.cs 相当于MVC分层的Controller。透过SetContentView方法,告诉系统要加载哪一个页面。接着透过FindViewById方法取得画面上按钮的对象实体。接着便可以针对按钮的属性或方法撰写相关的程序代码,或是处理按钮的事件。如上图所示,默认的范例是使用匿名方法,我们将它批注后,改用Lambda Expression来撰写。
5。接着按下F5,便可以开始进行除错,若没有预先开启Android仿真器,则Running devices列表会是空的,这时可以点击下方的"Start emulator image”链接来启动仿真器.
6。执行结果如下:
是不是相当简单呢? 接下来我们来开始iOS的Hello World。
与开发Android不同,目前Xamarin尚未支持在Visual Studio中设计应用程序页面,但官方表示目前已在研发当中,并会在不久之后的版本提供此功能。因此目前iOS项目的UI设计必须透过MAC的Interface Builder (XCode的一部份),或是直接在程序中宣告控件的位置及大小,Visual Studio中的HelloWorld Application便是使用此方法.
1.在Visual Studio 中新增项目,在项目模板中选择iOS下的iPhone,并在右边的模板中选择HelloWorld Application,接着指定项目名称(此处为HelloIOS)
2.第一次开启iOS项目时,Xamarin会提示使用者只有在商业版或更高的版本才能在Visual Studio中开发iOS项目.
接着Xamarin便会自动启用试用版本的授权,启动完毕后,会提示使用者Visual Studio将会重新启动.
若您MAC上的Xamarin授权尚未启动,将会看到系统提示,说明Build Server(也就是MAC)尚未启用授权。此时按下Activate按钮可能没有作用,请依照下面的步骤,在MAC上启用Xamarin授权.
3.由于Xamarin在MAC上预设是以免费版本开启。因此可以透过以下方法强制启用Xamarin试用授权。首先在MAC的Finder开启Xamarin Studio
新增一个专案,选择iPhone =>Single View Application。项目建立后,点击菜单中的项目=>Profile - Mono
此时会看到授权启用的画面。当完成启用后,我们就可以回到Visual Studio来指定我们的Build Host.
4.在Visual Studio的工具=>选项中,可以看到多出了一个Xamarin节点,点击Xamarin下的iOS Settings,在右边可以指定Mac Build Host.您可以直接输入MAC的计算机名称或IP地址,或按下Configure 进行设定.
在设定窗口中,Xamarin会搜寻同一网段中已安装并启用Xamarin的MAC机器。若状态显示为"Ready",请按下Connect进行联机。
若状态不是"Ready”,可以按下Diagnose按钮进行联机诊断。如下图所示,若某一个或多个项目无法通过联机诊断,则会出现failed,您可以展开failed的项目了解失败的原因.
5.请在组态管理中,将平台设定为iPhoneSimulator,默认为部署至实体机器,但这需要向Apple申请付费的开发者账号.
接着在工具栏中,可以选择iOS 仿真器的版本,右边绿色打勾的符号表示已与MAC Build Host的联机正常,若是反灰的状态,请单击右边的
图示重新与指定的Build Host联机.
6.开启专案中的MyViewConrtoller.cs 檔。在此范例中,同样是在画面中间放置一个Button控件(在iOS中的类别名称为UIButton)并显示点击的次数。由于我们是在程序中产生控件,因此有部份程序代码是在宣告对象的布局属性,请参考下图中程序代码的批注:
7.接下来才是范例程序的重点,若您是在XCode中设计好UI,则可以取代上面的程序.
如同先前Android的HelloWorld,在iOS中,按钮的点击事件不叫Click,而是TouchUpInside,因此我们透过此事件的处理,在用户点击了按钮后,改变按钮的显示文字(使用UIButton的SetTitle方法)。最后将Button控件透过View.AddSubview方法加入到画面当中。执行结果如下:
作为一个跨平台的解决方案,使用Visual Studio 搭配Xamarin开发行动装置应用程序具有以下特色:
可以在同一个方案中包含所有平台的项目: 包括Windows Phone,Windows 8 Store App,iOS以及Android。如下图所示:
程序代码共享:在设计时,将与平台无关的商业逻辑、服务存取、数据存取以及数据层从接口抽离出来,如下图所示:
底下说明如何才能达成上述的项目整合以及程序代码共享,首先来看看架构示意图:
从上述的示意图,我们可以看到,左半边是可以抽离出来的共享程序代码,这部份将独立成一个项目,并只加入常用的组件(如Base Class Library),若有部份程序代码使用到与平台相关的组件或技术,可以在程序代码中加入 条件式编译的指示词,供各平台直接使用,不需要进行修改。
而在各平台的项目中,可以透过档案连结的方式,将共享程序代码的部份连结到各平台项目。但由于目前Visual Studio并没有提供可以同时设定多个档案或整个文件夹连结的方式,因此若每个档案都要手动链接,其实是较不实际的。而且日后共享程序代码项目若有档案的异动,如新增或删除。各平台项目并不会同步更新。此时我们可以透过1个叫做”Project Linker 2012”的扩充功能进行协助(它也有对应Visual Studio 2010的版本).
安装好Project Linker后,我们便可以在各平台项目点击鼠标右键=>Add project link
接着选择来源项目,之后便会为来源项目的每个文件夹及档案进行连结.
连结的档案在Visual Studio中都会有个蓝色箭头的图示
透过上述的设定后,便可以在各平台项目共享程序代码。在开发平台项目时,只要针对用户接口以及针对控件的操作撰写程序即可。对于商业逻辑,数据存取的部份则可以在各平台共享,这是使用原生的开发方式(Objective-C,Java)所无法达到的。实际执行结果如下:
本文说明了Xamarin 的特色以及开发架构。希望透过简单的范例让第一次接触的开发人员能够立即着手进行安装及开发。在接下来的系列文章中,将会介绍如何使用Xamarin及Visual Studio 使用iOS以及Android的基本控件及多页面的串接。
- http://blog.xamarin.com/android-in-c-sharp/
- http://www.thinkpower.com.tw/xamarin/
- http://docs.xamarin.com/guides/ios/getting_started
- http://docs.xamarin.com/guides/android/getting_started