原文 Visual Studio跨平台开发实战(1) - Hello Xamarin!android
前言ios
应用程式发展的脚步, 历来没有停过. 从早期的Windows 应用程式, 到网路时代的web 应用程式, 再到近几年至关盛行的行动装置应用程式(Mobile Application), 身为C#的开发人员与Visual Studio的使用者. Windows Phone与Windows Store App的开发是否已知足不了你了呢? 若是可以让你使用C#及Visual Studio 来开发iOS及Android的app. 是否能再度唤醒你的开发魂? Xamain正是为了这样的需求而誔生的framework.web
简介架构
Xamarin是由早期的Mono专案演变而来,本来是在Linux上执行C#程式的一个开放原始码专案.后来陆续发表支援iOS的Mono Touch framework以及Mono For Android Framework.所以它在市场上并非一个新的产品. 2011年, 本来在Novell的Mono专案团队独立成立一家公司, 正式将名称改成Xamarin, 此为Xamarin的由来. Xamarin 具备如下特色:app
系统需求ide
安装Xamarin工具
不管是在Windows或是MAC上安装Xamarin都至关简单,只要在http://xamarin.com/download上填入名称及Email账号,即可以进行下载.而只要依照安装精灵点选下一步,就能够将Android SDK等相关元件装好.布局
Windows 版安装昼面:post
MAC版安装画面:开发工具
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应用程式啰!!
使用Visual Studio开发Android HelloWorld!
使用Xamarin 开发Android应用程式可说是至关的方便, 不只支援在Visual Studio中使用拖曳的方式设计使用者介面, 还整合如AVD及SDK Manager等工具. 废话很少说, 开始咱们在Visual Studio上的第1支Android程式吧~
1. 在Visual Studio 中新增专案, 在专案范本中, 请展开C#节点, 你会发现专案范本会多出Android及iOS类型的专案范本, 咱们在这个范例中选择”Android Application”, 并在名称中输入"HelloDroid” (固然您能够改为任何您想要的名称)
2. 专案创建后, 您会发现工具列中多出几个项目:
说明以下(由左至右):
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.
使用Visual Studio开发iOS HelloWorld!
与开发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连线.
5. 开启专案中的MyViewConrtoller.cs 档. 在此范例中, 一样是在画面中间放置一个Button控制项(在iOS中的类别名称为UIButton)并显示点击的次数. 因为咱们是在程式中产生控制项, 所以有部份程式码是在宣告物件的布局属性, 请参考下图中程式码的注解:
6. 接下来才是范例程式的重点, 若您是在XCode中设计好UI, 则能够取代上面的程式.
如同先前Android的HelloWorld, 在iOS中, 按钮的点击事件不叫Click, 而是TouchUpInside, 所以咱们透过此事件的处理, 在使用者点击了按钮后, 改变按钮的显示文字(使用UIButton的SetTitle方法) . 最后将Button控制项透过View.AddSubview方法加入到画面当中.
执行结果以下:
跨平台开发简介
做为一个跨平台的解决方案, 使用Visual Studio 搭配Xamarin开发行动装置应用程式具备如下特点:
底下说明如何才能达成上述的专案整合以及程式码共用, 首先来看看架构示意图:
从上述的示意图, 咱们能够看到, 左半边是能够抽离出来的共用程式码, 这部份将独立成一个专案, 并只加入经常使用的组件(如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_intro.aspx
http://docs.xamarin.com/guides/ios/getting_started