为什么小米移动开发者平台切换到Xamarin

423被浏览96,996分享邀请回答10622 条评论分享收藏感谢收起1213 条评论分享收藏感谢收起移动领域多平台的现状,使得跨平台开发已经成为移动开发者必然选择。马年伊始,全球最大中文IT社区CSDN宣布与知名跨平台开发工具 Xamarin正式达成合作关系,CSDN引进能用C#高效开发出iOS、Android 与Windows的Xamarin,将帮助Xamarin进入并开拓中国移动开发领域,共同为中国移动开发者提供更好的跨平台解决方案。 在过去的一年里,移动跨平台开发工具Xamarin的势头颇为强劲,在全球跨平台开发工具使用份额比已有着显著增加。微软、GitHub、惠普等知名企业都已经导入Xamarin的解决方案。Xamarin是提供原生解决方案的跨平台行动开发工具,透过Xamarin开发工具与程序语言,开发者即可使用熟悉的C#开发出iOS、Android 与Windows 等平台的原生(Native) App 应用程序。Xamarin不仅可以实现&一次编写,随处运行&,更可达到原生UI的跨平台效果。与基于HTML/JS/CSS的PhoneGap相比,Xamarin最大的优势是通过与系统的底层API通信并与系统原生UI直接交互,可以保证应用的高性能和UI流畅性。Objective-C与C# with Xamarin代码对比(以AudioFile为例)
此次CSDN将Xamarin正式引进中国市场,将为开发者提供Xamarin国内购买渠道,可以省去海外购买软件购买外汇手续、汇差损失、软件进出口报关手续等繁琐流程。同时将联合Xamarin唯一签约授权的亚太区技术支持中心-ThinkPower的专业技术团队提供本地即时的技术支持及培训服务。之后CSDN还将不定期在国内各地举办Xamarin讲座与沙龙,帮助国内开发者更快上手使用Xamarin。CSDN有超过2800万注册用户,作为全球最大中文IT社区和服务平台,致力搭起中国开发者与国外优秀开发工具的沟通桥梁。在去年,CSDN已将全球领先的协同软件供应商 Atlassian引进中国。CSDN希望为中国移动开发领域引介更多优秀的开发工具同时,让更多国外优秀开发工具能够更多了解与满足中国开发者的需求。链接:、
24小时报不停
币看bitkan获得1000万美元B轮融资,中云辉资本领投
M.Y.D已完成2000万人民币天使轮融资
8Securities获得2500万美元C轮融资,野村控股投资
灵犀金融或数亿元C轮融资,领投方为国资背景的金融投资集团
云海螺英语获得1500万人民币Pre-A轮融资
北京工商对今日头条行政处罚,没收广告费并处3倍罚款
中美关税大战开战,科技股盘前一片惨跌
特斯拉难逃中国关税,马斯克窘境雪上加霜
乐视网:选举刘淑青为公司第三届董事会董事长
特朗普发推:我们没有和中国进行贸易战
杭州运管责令滴滴限期整改:仍无法掌握其真实数据
腾讯视频、优酷、爱奇艺联合倡议:抑制不合理高片酬
滴滴外卖:已在无锡占据1/3市场份额 将进入更多城市
传亚马逊有意收购Flipkart,后者估值或达210亿美元
广电:严肃处理今日头条、快手传播有违道德节目问题
苹果自造芯片:一年能节约5亿美元
2017年共享单车质量抽查:3个品牌3批次产品不合格
OPPO宣布成立研究院 称将加强5G、AI等技术研究
中移动开通全球首个5G系统站点,5G商用释放提速信号
美国封杀华为设备,华为:所言不实 将伤害美国消费者
谷歌铺设新海底电缆,提高亚洲与澳大利亚云服务速度
信而富公布第四季度财报:净亏损同比缩小70%
苹果发力人工智能:挖来谷歌前AI负责人
特斯拉:Model 3生产取得进展,今年不需要额外融资
Facebook公布清理帐号成果:删70个账号和138个页面
数字货币大跌,矿机显卡等产业链上游受挫
苹果欲摆脱英特尔牵制:计划Mac电脑使用自研芯片
福布斯评全球最佳创投人:沈南鹏居首,系华人首次登顶
YouTube总部附近发生枪击案:三人受伤 嫌疑人已死亡
美团签署全资收购摩拜协议,摩拜将保持品牌运营独立  上一篇 发布之后不久,无独有偶,微软宣布了并且会为Windows、Mac和Linux开发一个核心运行时(Core CLR),这也是开源的!IT媒体网站纷纷转载,博客园的C#开发者们热泪盈眶(泥煤都等这一天好久了!)
  与此同时VS2015预览版更是直接集成了Android模拟器,但是其实里面并没有说集成IOS模拟器,我不知道大家是怎么得出可以直接用VS来开发Android和IOS应用的。不管怎么说,这都是个好消息。那么问题来了,C#如何来开发Android和IOS应用?微软会怎么做我们不确定,但是我们倒是可以来看看Xamarin是如何做的。
Android系统架构
  我想下面这张图做Android开发的同学应该很熟悉,下面我们就通过来了解Android系统的架构入门来看看Xamarin会怎么样去做?
Linux Kernel 操作系统层
Libraries And Android Runtime 各种库和Android 运行环境
Application Framework 应用框架层 (由Java编写)
Applications 应用程序层(由Java编写并且在Dalvk虚拟机来运行)
  现在做Android开发的同学只要熟悉这些应用框架层的一些接口和类库就可以给方便的来实现自己的Android应用程序。
关于Dalvk虚拟机与Java运行环境的区别
Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。
Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
不同于Java虚拟机运行java字节码,Dalvik虚拟机运行的是其专有的文件格式
Dex文件格式可以减少整体文件尺寸,提高I/o操作的类查找速度。
是为了在运行过程中进一步提高性能,对dex文件的进一步优化。
所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制
有一个特殊的虚拟机进程Zygote,他是虚拟机实例的孵化器。它在系统启动的时候就会产生,它会完成虚拟机的初始化,库的加载,预制类库和初始化的操作。如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快的数据提供给系统。对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域。
  大家注意第2点和第7点有助于我们理解Xamarin.Android的工作机制。
Xamarin.Android 架构
  Java编写的Android应用程序通过调用 Android.* 和 Java.* 这些命名空间下的类来实现一些系统的功能包括:声音、显示、OpenGl等一些通过Java API不能实现的功能或者说是与硬件、系统平台相关的功能。那这里的问题是当我们用C#来编写的时候,这些功能怎么去调用?C#写的Android 应用程序又是如何初始化的?
Android Callable Wrappers (ACW)
  当一个C#开发的Android程序运行的时候,除了一个Dalvik的虚拟机实例,还有一个Mono的虚拟机实例在运行。那个Dalvik虚拟机实体就像一个宿主,我们的APP在宿主上运行,而我们所有用C#写的方法都会以ACW的形式被调用。在Java代码中以native的式式invoke,就像invoke其它C或者C++的代码一样。
  Momodroid.exe 在编译阶段会为我们的C#类生成对应的ACW。
2 using Android.A
3 using Android.OS;
5 namespace Mono.Samples.HelloWorld
public class HelloAndroid : Activity
protected override void OnCreate (Bundle savedInstanceState)
base.OnCreate (savedInstanceState);
SetContentView (R.layout.main);
对应生成的ACW代码:
1 package mono.samples.helloW
3 public class HelloAndroid
extends android.app.Activity
static final String __md_
__md_methods =
"n_onCreate:(Landroid/os/B)V:GetOnCreate_Landroid_os_Bundle_Handler\n" +
mono.android.Runtime.register ("Mono.Samples.HelloWorld.HelloAndroid, HelloWorld, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", HelloAndroid.class, __md_methods);
public HelloAndroid ()
if (getClass () == HelloAndroid.class)
mono.android.TypeManager.Activate ("Mono.Samples.HelloWorld.HelloAndroid, HelloWorld, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", "", this, new java.lang.Object[] {
public void onCreate (android.os.Bundle p0)
n_onCreate (p0);
private native void n_onCreate (android.os.Bundle p0);
  大家可以看到上面那个 native的n_onCreate方法最后就会调用那个通过mono虚拟机注册的Mono.Samples.HelloWorld.OnCreate 方法。
Managed Callable Wrappers (MCW)
  上面我们讲Dalvik 虚拟机是我们C#开发的Android应用程序的宿主,它通过ACW来调用我们用C#写的方法。如果我们的这个C#里面的方法涉及到一些声音或者系统本身,或者说现在已经有很多成熟的用Java写的类库,我们想调用怎么办? 答案是我们再通过MCW 调回去。在C#运行时中去调用Java 称之为MCW。
  Xamarin.Android Framework中有很多就是MCW,关于MCW的创建以及C#与Java集成开发的东西我们后面再细讲,包括一个C#开发的Android应用程序是如何被启动的,我们后面再细讲。对于C#开发的Android应用程序来说,性能上面肯定是会有影响,但是影响有多大,我并没有做过具体测试,所以就不详述了。后面我们再细细的去对比。
Xamarin.IOS 架构
  对于开发者来说,Xamarin.IOS相对于Xamarin.Android就要简单很多了,我们用C#开发的ios应用程序在被编译成IL代码之后,然后转交给Apple complier直接编译成IPhonee的本地机器码。也就是说C#写的IPhone应用程序和objective-c 写的是一样的。并且Xamarin团队保证在每一个IOS系统更新的时间同步更新Xamarin.IOS这样我们就不用担心被滞后了。
  这仅仅是一个粗略的介绍,Xamarin移动跨平台方案是如何来工作的,还有太多我们没有涉及。 Xamarn.Forms为多种移动平台提供了统一的UI(虽然目前还有些比较特别的没有实现,官方也没有力推它,用来做一些原型,或者概念验证可以试一样,另外如果你的UI确实很简单,那倒是没有问题。),当然在Xamarin.Forms不能够满足你的要求的时候,可以使用Xamarin.Android和Xamarin.IOS的UI控件,这些也是Native的,也就是说在UI方面不会有性能的影响。
  就目前来看C#来开发IOS应用更具有优越性,我们要在VS中开发Iphone的应用程序需要配一台Mac来做编译。相对而言,开发Android的应用程序就会显得繁琐一些,底下还有一些隐藏的东西我们没有具体的讲,包括一个app的创建过程,C#与Java集成在一起开发时候的交互等等,这些问题我们就留在后面慢慢来解决。
http://developer.xamarin.com/guides/android/under_the_hood/architecture/ http://en.wikipedia.org/wiki/Java_Native_Interfacehttp://developer.xamarin.com/guides/android/advanced_topics/java_integration_overview/
阅读(...) 评论()有人用 xamarin 开发手机 App 吗?可以分享一下经验吗?
全部答案(共1个回答)
变得难以置信地迅捷和简单。Xamain的产品简化了针对多种平台的应用开发,包括iOS、Andoid、Windows Phone和Mac App。Xamain由许多著名的开源社区开发者创立和参与,而且也是Mono项目的主导者——C#与.NET框架的开源、跨平台实现。
作为一个跨平台开发框架,Xama...
Xamain[1]始创于2011年,旨在使移动开发变得难以置信地迅捷和简单。Xamain的产品简化了针对多种平台的应用开发,包括iOS、Andoid、Windows Phone和Mac App。Xamain由许多著名的开源社区开发者创立和参与,而且也是Mono项目的主导者——C#与.NET框架的开源、跨平台实现。
作为一个跨平台开发框架,Xamain.Moile有很多优点。在这一框架内,开发iOS、Andoid、Windows Phone和Mac App应用可以不用转到Eclipse 或者额外购买Mac并使用Xcode,而继续在Visual Studio之中使用C#与.NET Famewok进行。
生宝宝前我102,生完宝宝后我是120斤,因为没奶,我就在婆婆的教导下喝了N多的汤汤水水啊,结果奶没...
生宝宝前我102,生完宝宝后我是120斤,因为没奶,我就在婆婆的教导下喝了N多的汤汤水水啊,结果奶没...
生宝宝前我102,生完宝宝后我是120斤,因为没奶,我就在婆婆的教导下喝了N多的汤汤水水啊,结果奶没...
生宝宝前我102,生完宝宝后我是120斤,因为没奶,我就在婆婆的教导下喝了N多的汤汤水水啊,结果奶没...
生宝宝前我102,生完宝宝后我是120斤,因为没奶,我就在婆婆的教导下喝了N多的汤汤水水啊,结果奶没...
答: 随行付用起来一般吧,之前用过,现在用的是中付支付,闪现0.38,刷卡马上到账,它有央行的支付牌照,属于正规的一清机。如果你要买的话我觉得这个不错。
答: 这个有很多
答: 重新安装网卡驱动程序,然后重新设置网络连接。
大家还关注
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415CSDN引进跨平台开发工具Xamarin 为C#开发者服务
发表于 23:11|
摘要:全球最大中文IT社区CSDN宣布与知名跨平台开发工具Xamarin正式达成合作关系,CSDN引进能用C#高效开发出iOS、Android 与Windows的Xamarin,为中国移动开发者提供更好的跨平台解决方案。
移动领域多平台的现状,使得跨平台开发已经成为移动开发者必然选择。马年伊始,全球最大中文IT社区CSDN宣布与知名跨平台开发工具Xamarin正式达成合作关系,CSDN引进能用C#高效开发出iOS、Android 与Windows的Xamarin,将帮助Xamarin进入并开拓中国移动开发领域,共同为中国移动开发者提供更好的跨平台解决方案。在过去的一年里,移动跨平台开发工具Xamarin的势头颇为强劲,在全球跨平台开发工具使用份额比已有着显著增加。微软、GitHub、惠普等知名企业都已经导入Xamarin的解决方案。Xamarin是提供原生解决方案的跨平台行动开发工具,透过Xamarin开发工具与程序语言,开发者即可使用熟悉的C#开发出iOS、Android 与Windows 等平台的原生(Native) App 应用程序。Xamarin不仅可以实现“一次编写,随处运行”,更可达到原生UI的跨平台效果。与基于HTML/JS/CSS的PhoneGap相比,Xamarin最大的优势是通过与系统的底层API通信并与系统原生UI直接交互,可以保证应用的高性能和UI流畅性。Objective-C与C# with Xamarin代码对比(以AudioFile为例)此次CSDN将Xamarin正式引进中国市场,将为开发者提供Xamarin国内购买渠道,可以省去海外购买软件购买外汇手续、汇差损失、软件进出口报关手续等繁琐流程。同时将联合Xamarin唯一签约授权的亚太区技术支持中心-ThinkPower的专业技术团队提供本地即时的技术支持及培训服务。之后CSDN还将不定期在国内各地举办Xamarin讲座与沙龙,帮助国内开发者更快上手使用Xamarin。CSDN有超过2800万注册用户,作为全球最大中文IT社区和服务平台,致力搭起中国开发者与国外优秀开发工具的沟通桥梁。在去年,CSDN已将全球领先的协同软件供应商Atlassian引进中国。CSDN希望为中国移动开发领域引介更多优秀的开发工具同时,让更多国外优秀开发工具能够更多了解与满足中国开发者的需求。链接:、
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章

我要回帖

更多关于 小米移动开发者平台 的文章

 

随机推荐