我对Xamarin的一些抱怨
博客专区 > kut 的博客 > 博客详情
我对Xamarin的一些抱怨
kut 发表于4年前
我对Xamarin的一些抱怨
  • 发表于 4年前
  • 阅读 7555
  • 收藏 16
  • 点赞 2
  • 评论 20

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 看了相关资料,给折磨过之后,写一些关于Xamarin的感想。

Xamarin,因为客户公司要节省成本,想提高开发效率,这样,我接触了这东西。

很早就听说这家伙了,那是做Android开发的时候,这家伙把广告打得好响,去看了一下,貌似愿景很美好,可是一看见授权费用这么惊人之后,立马摇头,再也没看过。而这段时间因为客户公司的要求,想在技术成本及开发上取得一些便利,于是听了微软推销人员的话,想在这上面做一些尝试,于是乎自己便再次接触这东西。

Xamarin设想得想当美好,它的意思就是,无论是iOS平台亦或是Android平台,它们在业务方面都是一致的,只是因为Android和iOS开发语言的不同,而使用C++的话会使得开发这些共用的业务逻辑的代码成本过高,于是它想利用Mono可移稙性,统一所有平台都使用C#这种语言,将共用的业务逻辑统一写在一个模块中,而各个平台的应用另写模块,却共用这个业务模块,这样可以省下大量的开发工作,特别是Android和iOS开发时因为业务理解不一或实现不一导致的不一至的业务行为和结果。这是相当理想化的设想,而且很多工作都可并行合作。

但是这个想法太不切实际。这里就列几点吧。

  1. Android或iOS平台上该要学习的知识点,你都得学习一遍。也就是说,别以为你懂个C#就行,你如果想进行Android开发,你还得会Java语言,并且了解Android开发环境里的一切,包括API,相关运作机制。这样的话,你得了解更多的东西,你才能在Xamarin上开发你想要的东西,也就是说,你得先是一个Android开发人员,然后才能是使用Xamarin开发的人员。

  2. API虽然做了一对一的映射,可是却是迟滞的,也就是说,你使用的API不可能立即和官方同步。而且因为Xamarin的实现机制,有些东西并没有很好地实现,比方说iOS的已经使用了ARC,而Xamarin使用的还是自行释方这些资源,虽然C#语言可以垃圾收集,可是关于UI这一块的实现却是老旧的自行释放方式。再比方说iOS排版,Xamarin仍是使用Frame这样的方式,而不是使用Autolayout。

  3. 第三方库支持的不行。开发惯iOS的程序员都知道个cocoapods这个东西,它可以帮我们管理第三方库,而在iOS上开发效率上,这些第三方开发库起到了决定性的作用,Android也是同样的。然,在Xamarin中,你必须要抛弃这些,也就是说,某种程度上你是在废了自己武功之后再去和高手较量。当然,如果你在Xamarin上积累了大量的Xamarin库,那还好,可是这毕竟是少数,Xamarin是绝对小众的东西,从某个意义上讲,这是不可能实现的。

  4. 从职业前途而言,你认为Android开发人员或者是iOS开发人员会SB到转到这个上面吗?

实在是无奈,年后就要实施这个东西,狗日的。

共有 人打赏支持
kut
粉丝 51
博文 83
码字总数 24801
评论 (20)
开源中国匿名会员
给个授权玩一下呗。
gakaki
qt也一样啊
胖熊要吃肉
也在做这方面的尝试,博主的文章很有参考价值
Ale
同感!我也是被Xamarin搞的好恶心,本来用iOS开发很简单的一个东西,Xamarin要用更多时间,写完iOS库工程还要写C#绑定,而且还不能调试iOS库工程问题。总觉得在干托裤子放屁的事。
找不到名字

引用来自“Ale”的评论

同感!我也是被Xamarin搞的好恶心,本来用iOS开发很简单的一个东西,Xamarin要用更多时间,写完iOS库工程还要写C#绑定,而且还不能调试iOS库工程问题。总觉得在干托裤子放屁的事。

托裤子放屁 -> 脱裤子放屁
LinkerLin
类似的尝试很多。包括其他平台的类似情景。
失败的居多。
主要是中间层往往增加了复杂度,而不是相反。
纵使有花兼明月何堪无酒亦无人

引用来自“gakaki”的评论

qt也一样啊

QT 要好的多吧!和他不一样吧!虽然都是跨平台!
AlexChi

引用来自“gakaki”的评论

qt也一样啊

Qt并没有主打跨平台,目前的跨平台也是尝试性的。Qt完全不像文中的Xamarin。
Yu-shi
楼主你就这么残忍地一博就打消了我对Xamarin的热情……本来我还想试试呢
Finlay
Xamarin 完全不用考虑的。
树相马
使用过一周,发现,我先要成为咖啡程序员才能使用它。于是。·~~~~~~彻底放弃!
zybook
还是delphi好
xmlspyspring
还有哪个Titanium,使用js写的,同样的问题.用过一段时间后,立即扔了.
朱静程
不是很同意楼主观点,虽然你说的有一些道理。
真正做跨平台时才能体会到。
渡世白玉

引用来自“gakaki”的评论

qt也一样啊

QT不一样、、Qt ios的我不清楚、、Qt Android是直接开发的so库文件,用NDK,然后Jni调用的、、Qt更多的是api封装、、话说Android和ios原生都是支持C++开发的、、C#不一样啊、、
Zero__One
有参考价值
javasql
一套代码跨Android和iOS开发,目前看来就delphi和Adobe Air靠谱。
衣往情深
看来我不用考虑Xamarin 了,还是.net归.net,ios和安卓的学原生,需要跨平台就用appcan之类的做,游戏用coco或者3D...
大学霸
   C#苹果应用开发——Xamarin ios 教程 Xamarin跨平台开发http://my.oschina.net/u/1585857/blog/228818
DarrenTen
同感,试用了下,幸亏懂点Android开发,否则真不知道从何开始下手开发,还真以为是write once, run anywhere呢,原来坑人的。既不是设想的像开发winform一样,拖个控件,写写逻辑就行了的事,也不是只需要编写一个Android版本就直接可以打成ios包,简直坑爹,授权费还这么贵,玩毛!
×
kut
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: