Xamarin是Mono创始人Miguel de Icaza创建的公司,旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发。
简介
Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:http://xamarin.com/products):
- Xamarin Studio:IDE,是从原来的MonoDevelop改名而来。现在从MonoDevelop官方网站下载的其实也是Xamarin Studio:http://monodevelop.com/。 (话说MonoDevelop也是SharpDevelop的一个分支发展而来)
- Xamarin.iOS:原名MonoTouch,用于开发iOS应用程序,并且可以发布到app store上。
- Xamarin.Mac:用于开发mac os x应用程序,类似于windows 桌面应用。
- Xamarin.Android:原名MonoDroid/Mono for Android,用于开发Android应用程序。
- Xamarin for Visual Studio:Visual Studio的插件,包括iOS和Android,不过目前只支持vs2010/vs2012。
- Xamarin Test Cloud:测试云,可以把你的应用程序发布到Xamarin的云上面测试,它可以自动帮你在数百种设备上测试你的应用程序。
- Component Store:组件商店,上面有各种收费/免费的控件提供下载。
话说还有windows phone不知道跑哪去了…
界面设计器
对于Android,不管是Xamarin Studio还是Xamarin for Visual Studio,都有提供一个设计器,方便直接对界面进行设计,具体见:http://docs.xamarin.com/guides/android/user_interface/designer_overview/。
而iOS则没有这么好运了,Xamarin for Visual Studio没有设计器。而Xamarin Studio虽然有设计器提供,不过目前也只提供在iOS上的Xamarin Studio alpha版本,估计目前稳定性还不够,具体见:http://docs.xamarin.com/guides/ios/user_interface/designer/,只好期待未来能够提供。
已经安装了Xamarin Studio或者Visual Studio的可以直接通过切换通道来更新:http://docs.xamarin.com/recipes/cross-platform/ide/change_updates_channel/,目前主要有Stable稳定版、Beta测试版、以及alpha版。
工作方式
Android应用程序会被编译为IL代码,启动时再进行JIT编译(动态编译),发布程序的时候会包含一个mono runtime。
而iOS则是直接通过AOT编译(静态编译)为ARM汇编代码。
具体见:http://xamarin.com/how-it-works
API文档
Xamarin提供了API文档:
- Android:http://androidapi.xamarin.com/?link=root%3a%2fMonoAndroid-lib
- iOS:http://iosapi.xamarin.com/?link=root%3a%2fMonoTouch-lib
安装
Xamarin Studio
Xamarin Studio可以直接从http://monodevelop.com/Download下载,目前最新的稳定版为4.0.13。
- Windows版依赖于.NET Framework 4.0和GTK# for .NET 2.12.22,安装好两个依赖之后可以直接安装Xamarin Studio即可。
- Mac OSX版依赖于Mono + GTK#,需要先从http://www.go-mono.com/mono-downloads/download.html下载MRE(Mono Runtime)或者MDK(Mono DevelopmentKit)安装。MRE和MDK都包含GTK#和MONO。
Android
android依赖JDK6以及android SDK,所以需要先下载:
- JDK6:http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html
- android SDK及NDK:http://developer.android.com/sdk,其中NDK不是必须的。
- Xamarin.Android:http://xamarin.com/download
安装好JDK及androidSDK之后,再安装Xamarin.Android,会让你选择是否安装Visual Studio插件。
安装好Visual Studio插件之后,在菜单Tools->Options->Xamarin->Android Settings设置好Android SDK和NDK的路径。
额外说一句,eclipse实在是太差劲,跟intellij IDEA没法比,如果用java开发的话Android Studio是最佳选择,ADT就不用考虑了。
Android模拟器及调试
由于android SDK提供的模拟器是在是巨慢无比,太差劲了,所以不得不找一个替代品。
基于Virtual Box的GenyMotion绝对是最佳选择,运行速度非常流畅,不过目前只支持Android4.1.1、4.2.2。
在官网:http://www.genymotion.com/注册好账号,并下载安装GenyMotion,目前最新版本为1.3.0。
安装之前需要你的电脑上已经安装Virtual Box(目前最新版为4.3.2),不过我发现我安装了Virtual Box 4.3.2的情况下GenyMotion无法启动,所以后来又换成官方推荐的4.2.12,从https://www.virtualbox.org/wiki/Download_Old_Builds_4_2下载。
安装完成之后:
- 通过”Settings”按钮:设置好Android SDK路径,并勾选”When a virtual devices starts, connect it automatically to ADB”,”ADB from Android Developer Tools successfully found”。
- 通过“Add”按钮
- 添加设备,然后需要登录
- 如果所选的设备镜像没有下载,则需要在线下载某个设备的vbox镜像,一般镜像大小为200M。
- 通过向导提示添加虚拟机,输入名称如“lwme Nexus S - 4.2.2 - with Google Apps - API 17 - 480x800”,再等待虚拟机创建好
- 通过“Play”按钮运行虚拟机
虚拟机启动之后,VS的Xamarin.Android工具栏会列出设备的名称,选择这个设备就可以在GenyMotion模拟器上调试Android应用程序了。
iOS on mac
在mac os x要使用Xamarin Studio必须先安装XCode。假设已经安装好Xamarin Studio,那么也一样直接安装Xamarin.iOS即可,然后就可以直接通过Xamarin Studio直接开发调试iOS应用程序了。
iOS on windows
windows下的Xamarin.iOS直接安装即可,由于没有windows下的模拟器,所以需要连接到mac的模拟器进行调试。
前提条件是(具体见:http://docs.xamarin.com/guides/ios/getting_started/installation/mac/):
- 在mac下安装并激活Xamarin Studio及Xamarin.iOS
- 在Network->Proxies启用Web Proxy(HTTP)
- 关闭防火墙
还有一个最重要的前提是,你必须有有个iPhone Developer Program(IDP)证书,否则没办法调试,没有的话需要到:https://developer.apple.com/programs/ios/申请(个人开发者$99每年)。
做好以上操作之后:
- 在Visual Studio的Tools->Options->Xamarin->iOS Settings->Mac build host->Configure->Configure Host Manually
- 输入mac的ip地址,等待mac设备显示Ready
- 再点Connect按钮连接设备
- 连接成功
- 连接成功之后可能会提示SDK更新,选择更新即可,否则会提示版本不匹配无法连上mac
- 更新成功需要重新开启vs
Xamarin.iOS的Visual Studio插件调试有两种模式:
- 真机(iPhone):默认,需要把iPhone真机通过usb连到mac上
- 模拟器(iPhoneSimulator):模拟器调试
默认情况下是iPhone,可以在Build->Configuration Manager的Platform进行更改,否则没有连接iPhone会显示”No Devices Attached”。
具体的配置请见:http://docs.xamarin.com/guides/ios/getting_started/introduction_to_Xamarin_iOS_for_visual_studio/。
然后就可以调试了,某些情况可能mtouch没有运行权限,还需要通过chmod +x /Developer/MonoTouch/usr/bin/mtouch来赋予运行权限。
Visual Studio 2013
Xamarin的Visual Studio插件目前还不支持VS 2013,所以需要在安装Xamarin的VS插件时把2010和2012全选上 (由于我的电脑里只剩2013,而安装VS2013的时候还会安装部分VS2010的Shell,所以VS插件会被安装到VS2010的目录下)。
接下来需要手动复制一些文件(假如VS2013安装在C盘的话):
- 把C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Xamarin 复制到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Xamarin
- 把C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp目录下的Android目录和iOS目录复制到C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ProjectTemplates\CSharp
- 把C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp目录下的Xamarin.Android目录和iOS墓道复制到C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp
- 运行"c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" /setup /nosetupvstemplates生成项目及文件模板缓存
上面的方法来自:http://blog.fire-development.com/2013/07/01/install-xamarin-in-vs-2013-preview-1/,再由囧月改造。
现在就可以在VS2013上开发Android及iOS应用了。
更多的资料请看官方Developer Center:http://docs.xamarin.com/
更多中文资料:
http://www.microsoft.com/*/vstudio/Xamarin/
Terry's IT Note:http://www.dotblogs.com.tw/taihon64/Tags/Xamarin/default.aspx
James's Tech Blog:http://www.dotblogs.com.tw/jamestsai/category/9345.aspx
Donma 當麻許:http://www.dotblogs.com.tw/junegoat/Tags/Xamarin/default.aspx
浩呆的技術研究網站:http://www.dotblogs.com.tw/toysboy21/category/9451.aspx
最后,顺便推荐两本书:
- 《C#开发Android应用实战》:http://product.dangdang.com/23169905.html
- 《MonoTouch应用开发实践指南:使用C#和.NET开发iOS应用》:http://product.dangdang.com/22922216.html
--EOF--
Xamarin体验:使用C#开发iOS/Android应用的更多相关文章
-
VS2015安装开发ios android
前几天很火,装了一下,结果是不是太满意,装了VS2015只是多了一个android和ios的模版,最终还是要装xamarin ,最后装了个xamarin ,然后破解 破解地址:http://www.c ...
-
移动开发iOS&;Android对比学习--异步处理
在移动开发里很多时候需要用到异步处理.Android的主线程如果等待超过一定时间的时候直接出现ANR(对不熟悉Android的朋友这里需要解释一下什么叫ANR.ANR就是Application Not ...
-
正式版/免费版 Xamarin 体验与拥抱
感谢MS, 感谢老纳.终于把 Xamarin 这个磨人的小妖精给收了,在也不用向大神要破解补丁了, 终于可以光明正大的使用了!! 跟据实践, 如果你们想体验一下 .NET 开发 IOS /Androi ...
-
用Xamarin和Visual Studio编写iOS App
一说开发 iOS app,你立马就会想到苹果的开发语言 Objective C/Swift 和 Xcode.但是,这并不是唯一的选择,我们完全可以使用别的语言和框架. 一种主流的替换方案是 Xamar ...
-
javascript开发 ios和android app的简单介绍
先看几个名词解释: nodejs ionic,Cordova,phoneGap,anjularjs react-native,reactjs nodeJs 的介绍参见这里,写的很好http://www ...
-
[Hadoop 周边] 浅谈大数据(hadoop)和移动开发(Android、IOS)开发前景【转】
原文链接:http://www.d1net.com/bigdata/news/345893.html 先简单的做个自我介绍,我是云6期的,黑马相比其它培训机构的好偶就不在这里说,想比大家都比我清楚: ...
-
职业定位(移动端、ios开发、Android开发)
移动端 移动端webapp开发必备知识:http://www.chinaz.com/manage/2012/1128/283974.shtml 设计一款好的移动App,有哪些基本规则?http://w ...
-
vs2017开发IOS(vs2017 xamarin 连接mac)
这两天突然记起巨软的Visual Studio 2017 好像有说可以用C#开发IOS和Android应用,所以就自己去尝试了下生成过程. 相对与IOS来说,Android的生成过程还是比较容易的没有 ...
-
Delphi XE-Windows下配置开发环境 (Android版/IOS)
Delphi XE-Windows下配置开发环境 (Android版/IOS) http://www.52jike.com/thread-1-1-1.html Delphi XE5的Androi ...
随机推荐
-
给你推荐10款优秀的 HTML5 动画工具
HTML5 在过去三年快速增长,已经成为 Web 开发人员最喜欢的编程语言之一.强大的编程语言拥有开发更好的网页应用的能力. HTML5 中引入的新技术都非常好,像 Chrome.Firefox.Sa ...
-
kafka0.8.2以下版本删除topic
一些说明 kafka0.8.2及以上版本已经支持delete命令删除topic,可是之前的版本要是想删除topic还是要费一番手脚,绝对是个体力活... 该方法最好仅在线下开发环境中使用,毕竟要重启z ...
-
hihocoder #1301 : 筑地市场 数位dp+二分
题目链接: http://hihocoder.com/problemset/problem/1301?sid=804672 题解: 二分答案,每次判断用数位dp做. #include<iostr ...
-
Oracle11G 数据库 expdp、impdp使用示例
expdp 备份数据库.expdp/impdp简单测试 操作系统层面创建目录 [root@Oracle11g ~]# mkdir -p /home/oracle/db_back/ 修改目录的所属用户. ...
-
ArcEngine 关于缩放至一定比例显示地图的问题
有这一句就行了.axMapControl.get_Layer(i).MinimumScale=j;i为该图层的indexj为比例尺的分母
-
<;工厂方法>;比<;简单工厂>;多了啥
前言:多注重设计.仅当复习讨论! 简单工厂模式 UML图 假如有一位爱心人士,想给饥饿的流浪动物喂食.此时爱心人士身带了狗粮,但是他到处找啊找,最终只找到了猫大人,是不是有点惨兮兮.但是如果有简单 ...
-
GitHub 托管的10款免费开源 windows 工具
GitHub 是如今所有开源事物的*仓库, 这个网站最近发布了一个叫做<2016 Octoverse 状态报告>,详细列出了从去年起其一系列亮点, 包括总的活跃用户数,最常见的 emo ...
-
vue的生命周期(lifecycle)
这边转载一篇文章,个人认为写的不错,代码举了个例子很生动. https://segmentfault.com/a/1190000010336178
-
jenkins windows slave 报错ERROR: Error cloning remote repo &#39;origin&#39;
在slave上是git clone ssh是可以成功的,但是jenkins调用slave节点就报如下错误: ERROR: Error cloning remote repo 'origin' huds ...
-
C++中substr的用法
C++中substr函数的用法 #include<string> #include<iostream> using namespace std; void main() { s ...