`
rensanning
  • 浏览: 3548692 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38148
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607314
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682336
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89355
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401851
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69694
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91723
社区版块
存档分类
最新评论

成也Titanium败也Titanium-----之cons

阅读更多
上篇,我们来说说Titanium另外一面,看看他到底有什么样的不足。

1)收费的Titanium
   天下没有免费的午餐,免费的另一面就是收费!Titanium的营收模式分两种:增值收费和平台。基本部件免费,高级部件、Titanium Studio的附加功能和官方专业指导服务都需要付费。而且要想获得他们专业的1对1服务,更是相当的昂贵!

2)贫乏的开发文档
   API文档不完整,要么书写的过于简单,要么干脆就没有提到,要么就是版本已经升级没来得及更新,偶尔还有写错的。
   查看API是很多时候解决问题的最好方式,应该在最大程度上重视API的提供。
   提供的Guides内容也很有限,很多东西都没有提到,也就是能够得到一些基本的信息而已。
   Guides虽然是以WIKI的形式提供的,但也只能是他们自己的职员才能够编辑。
     --->(2012/03/26)Titanium 提供可编辑的Community Wiki了
   同样在Github上的project里理应开发的wiki也没有开放。
   他们提供了很多的入门视频,出发点是好的,但是一些由于版本升级后已经过期的视频没有被拿下,无法分辨是否还能观看使用。

3)Q&A论坛不完善
   首先他们使用的Q&A论坛程序本身在技术和设计上就存在很多问题,比如你想查找个问题是很费劲的,它所给你显示的结果的排序非常混乱,不知道是否结合了回答数,点击数,发布时间等,但就是跟你想象的结果差的太远,你就得挨个看看每个问题是否跟自己的问题类似,当你将你的Q&A Profile的Notifications设置成Enabled的时候,你也很多时候收不到来自论坛的邮件。这样你就无法知道是否有人回答了你的问题,不得不每次都把问题挨个查看一遍。

   很多人希望得到他们开发人员的回答,但是他们很少在Q&A论坛中回答问题,偶尔一次就是很难得的了。你会发现很长时间都没有人理会问题,很多时候还是一些热心的开发者来提供回答。

4)构建问题太多
   这是大家普遍反应的问题,在环境构筑,应用构建时候会出现很多问题,比如找不到SDK,build时出错,不能启动模拟器等等
   应用构建花费时间太长,很多时候当你点击启动emulator后,很长时间才能把模拟器启动起来,而模拟器启动起来后,你又会发现,Titanium总是提示找不到模拟器,让你重新启动。你不得不一遍一遍的重复这启动这个操作,直到它好用。

5)性能太差
   问题最大的还是性能问题,在Android下尤为严重(1.8版后引入V8后稍有改善)。当你往页面上添加很多View的时候,页面显示就很吃力,当你的Tableview中有很多行时,滚动起来就很费劲等等。

6)无缘无故的crash
   最苦恼的就是这个问题了,因为它会让你抓狂。也不知道什么原因,莫名的系统就提示你发生错误,不能响应了。一个最严重的问题是,应用程序崩溃时没有任何明显的原因,而且错误报告太简单,很难帮助开发者解决问题。很严重的时候他会影响到开发者发布应用到Appstore或AndroidMarket上去。

7)无法做内存管理
   不用开发者考虑内存管理,是好事也是坏事。你将无法知道你的内存使用状况,发生内存溢出的话,你将无从下手。很多时候会让你陷入内存溢出的困境中,无法解决。

8)UI也存在问题
   目前提供的UI控件也存在着Bug,比如说,不能响应事件,无法滚动,不能显示等等。
UI是应用的“门脸”,如果这里出现了问题,将直接导致用户卸载应用。有时候导航不能正常工作,造成了一些导航控制不能实现,UI的设计被打破,如果这发生在一个真正的应用程序商店的产品身上的话,对开发者来说将是一个灾难。但是苦恼的是你怎么Review你的代码都发现它没有任何毛病。

9)Bug修复太慢
   成千上万的开发者在使用Titanium,每天都会发现很多问题,提交给了Appcelerator。但是你会发现很多bug很长时间都未能解决,间隔几年的都有。

10)IDE功能不全
   最开始Appcelerator提供的IDE是Titanium Developer,自从收购Aptana之后,开始提供Titanium Studio。Titanium Studio是一个基于Eclipse的Aptana自定义版的IDE开发工具,它允许你创建,管理,测试你的移动应用项目工程,而且将工程自动打包发布到模拟器或者真机上去。而Titanium Studio在一遇到问题是就不在往控制台输出信息,最为严重的是会偶尔在构建的时候忽略代码的修改。你不得不每次修改完代码后clean你的工程。

   没有官方的可视化开发工具,可视化开发对于应用的页面布局是很重要的,无论是Android还是iOS都提供了强大的GUI工具。Titanium却迟迟没有提供,这就意味着你必须手动书写你自己的代码来实现你的布局。

   调试代码很不方便,Titanium studio还需要加强代码的调试功能。

11)错误提示不准确
   对于开发者来说,调试程序相当重要的,而在程序出错的时候,查看出错的位置,异常的堆栈等信息是很必要的。但是在开发中Titanium的错误提示很难让你找到问题所在,很多时候你都会得到一个模糊的错误提示,它没有给出你具体的错误,你也很难判断错误。很多时候不得不先把一大部分代码删除了,一点点的网上添加来看看那里出了错误。

12)应用文件太大
   在构建应用时会生成大量的文件,一个很简单的应用动辄就5,6M大小。而如果用原生的话,估计也就几十K大小。

   当Titanium把你的代码转换成目标平台(iOS,Android)代码的时候,它产生了大量的类。比如我们查看Xcode工程的话,会发现它生成了大概450个类,而这些类中我们可能用到的也就是10来个左右。这虽然不是很大的问题,但是他堆积到你的应用中,增大了应用的大小,从而将会加大用户访问网络的流量。

   在Android上,如果你查看应用源码的话,你会发现它被写的特别的臃肿。

13)功能受限
   Javascript不是Objective-C也不是Java,所以相比Object-C和Java开发出来的原生应用,可实现功能的范围有所限制。正如前所述,使用JavaScript开发是简单快速的,但是也将失去了原生应用开发语言的一些特有的功能。

   而且从代码上来说,Object-C和Java的结构化严格规范,使得程序很容易维护,而JavaScript灵活宽松的语法也加大了维护的难度。

14)并非完全的开源
   说Appcelerator不是完全的开源,一点儿不过,他不接受众多开发者的贡献。他是能说是公开了源代码而已。

15)Appcelerator在监视你
   Appcelerator在监视你,你知道吗?为了分析app,Titanium默认开启了分析功能。还有你想使用Titanium Studio创建应用的前提是:从Appcelerator申请账户,这样一来,你创建了什么应用,支持什么平台等等,都会传回给Appcelerator。Appcelerator每次发布的移动应用趋势报告就来源于此。

16)API封装不足
  尽管Titanium同时支持iOS和Android,但是目前的API还是需要写很多基于iOS和Android平台的代码(尽管他已经为各个SDK简化了代码)。

  对于JSON对象的正确性也需要特别的注意,自带的parser很严格,最好得先使用eval一下。

   Titanium API的灵活性也带来了不足,虽然他能你用短短的几行代码实现原生代码很长代码才能实现的功能,但是另一面来说他也限制了功能。比如你想给window设置一个铺满的背景,在原生代码中是很普通很简单的功能,但是Titanium中需要很多代码才能实现。

17)代码的可维护性
   Titanium在一定程度上增加了代码的复杂度。何出此言,随着app的功能的增加,代码在不断增多,开发也变得更复杂,你也将会遇到更严重的技术问题,比如:随机崩溃,奇怪的行为,恼人的错误,等等。

   而代码的组织,代码的可读性,MVC层次的分割,multi-device的支持, multi-platform的支持等等,都是需要你考虑的问题。

18)其他
   不断的发布新的产品而不去修复既有产品、网站的问题。而且“新”产品总是在beta或者准备阶段发布。

   有开发者通过Titanium开发的应用未通过Apple的审查,原因是应用调用了Apple的私有API,但是Appcelerator不承认他们有这个问题。
http://developer.appcelerator.com/question/123785/app-has-bee-rejected-by-non-public-api

最后说一个网上最差的案例!有人花2万多美元通过Titanium开发了一个iPad应用,但是经常莫名的crash,内存溢出。应用作者开始寻找Titanium Professional support,这当然要付很昂贵的服务费。虽然应用作者很详细的说明问题,甚至把相关代码发给了他们,但在很长一段时间里都没能解决问题。应用作者就把问题反映给了Appcelerator的CTO(抄送CEO),很快就有了回复。承任Titanium存在Bug,并相应的提出ticket承诺在以后版本中修正但是不可能等那么长时间等他们版本升级,所以应用作者需要更加专业的企业级服务
得到的回复是,每小时375美元帮他排查代码的问题,而应用作者估计他们至少需要20到40个小时才能通读他的代码后给出建议,这将是一笔不小的花费啊!
http://labs.thesedays.com/blog/2010/02/04/review-of-appcelerator-titanium/

正如所有事情一样,每一个设计方法,在每一个决策,都有优点和缺点。对于简单,小的应用来说,Titanium应该是最好的选择,但如果你希望强化你的应用程序的话还是选择原生开发环境比较好。Titanium 作为开发原型来说是一个非常优秀的工具,你可以花费很少的时间,作成prototype展示给客户,进行可用性测试。但是不管是正反哪个方面,在每次项目中都应该去评估,因为它跟取决于项目自身。需要考虑的关键点是:效益,成本,预算,开发的复杂性,跨平台支持有多重要,项目的战略,性能的重要性等等。你必须权衡每个正反方面的观点,根据你的具体优先顺序,来确定它是否适合你的需求。但是从个人观点来说,当你启动一个新的项目时,应该考虑考虑Titanium,它是一个很棒的选择!
1
0
分享到:
评论

相关推荐

    前端开源库-node-titanium-sdk

    **前端开源库-node-titanium-sdk** 前端开发领域中,`node-titanium-sdk`是一个重要的开源库,它基于Node.js环境,为开发者提供了一种使用JavaScript开发原生移动应用的途径。`node-titanium-sdk`是Appcelerator ...

    titanium-appcelerator-pull-to-refresh, 在your中,创建"pull to refresh" 视图的JavaScript方法.zip

    titanium-appcelerator-pull-to-refresh, 在your中,创建"pull to refresh" 视图的JavaScript方法 什么?这种方法,将帮助你在你的篓中制作视图"拖到刷新"。?要使用这里方法,你需要将这些文件包含在项目中:Ti....

    钛备份TitaniumBackup-v8.3.2-413_MoDaCo_SU-Patched_by_Alphaeva

    钛备份Titanium Backup Pro是目前为最强悍的程序和系统备份工具,需ROOT权限运行。它的程序命名就是一个暗示,钛(元素名Ti),是一种高档的金属,特点是重量轻但是强度大,相当稳固,被广泛应用于航天和航海这些...

    Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递.zip

    Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递 Google-Cloud-Messaging--Titanium -注册带有GCM和处理发送到设备的通知的Titanium MODULE 。Android平台使用c2dm进行推送,但是因为c2dm停止...

    atom-titanium, 用于 Titanium 合金的Atom 封装.zip

    atom-titanium, 用于 Titanium 合金的Atom 封装 用于 Titanium 合金的 All-in-One封装这是一个用于 Titanium 合金的Atom 封装。$ apm install titanium-alloy冲突&需要通知Alloy 1.8. x

    titanium-d1-kickstart.6.1.1

    titanium-d1-kickstart.6.1.1.gbin 强大的思科模拟器

    Titanium-Web-Proxy:C#中的跨平台异步HTTP(S)代理服务器

    要获得编程帮助,请使用带有标签Titanium-Web-Proxy的 。 产品特点 采用服务器连接池,证书缓存和缓冲池的多线程全异步代理 查看/修改/重定向/阻止请求和响应 支持相互SSL身份验证,代理身份验证和自动上游代理检测...

    创新Sound Blaster X-Fi Titanium系列声卡驱动 v2.40.0008 官方最新版

    titaniumhd声卡驱动是由创新官方为创新SoundBlasterX-FiTitanium系列推出的一款驱动程序,适合电脑声音有异常的用户来使用,欢迎喜爱的朋友下载使用!官方介绍titaniumhd声卡驱动是创新近期发布的一款适用于...

    ecm.titanium-26100.rar

    在本压缩包"ecm.titanium-26100.rar"中,包含的工具专门用于ECU的读写操作,这对于汽车调校、故障诊断以及性能提升等方面具有重要意义。 "KTAG2."标签暗示了这个工具可能属于K-TAG系列的第二代产品。K-TAG是一款由...

    titanium-web-proxy:C# 中的跨平台异步 HTTP(S) 代理服务器

    如需编程帮助,请使用带有标签 Titanium-Web-Proxy 的 。 特征 采用服务器连接池、证书缓存和缓冲池的多线程和异步代理 查看、修改、重定向和阻止请求或响应 支持相互 SSL 认证、代理认证和自动上游代理检测 在 ...

    Titanium中文版开发手册

    **Titanium中文版开发手册** Titanium中文版开发手册是一份专门为中文用户编译的开发者指南,旨在帮助熟悉中文的开发者充分利用Titanium框架进行移动应用的开发。Titanium是一个开源的JavaScript平台,允许开发者...

    [Titanium] Appcelerator Titanium 移动应用开发教程 (英文版)

    [Packt Publishing] Appcelerator Titanium 移动应用开发教程 (英文版) [Packt Publishing] Creating Mobile Apps with Appcelerator Titanium (E-Book) ☆ 图书概要:☆ Develop fully-featured mobile ...

    Atom-Titanium-Build,钛菜单原子运行,包装等。对Hazemkhaled/钛合金有贡献.zip

    Atom-Titanium-Build.zip,钛菜单到Atom,包括Run、Package等这个项目已不在积极开发之中。自从@appcelerator为atom发布了令人敬畏的官方软件包以来,包括调试、构建等等。,atom是一个用web技术构建的开源文本编辑器...

    Titanium Mobile SDK 3.1.0 Apidoc 离线版

    Titanium Mobile SDK 3.1.0 是一个用于构建原生移动应用的开发工具,尤其针对iOS和Android平台。这个版本的Apidoc是开发者的重要参考资料,它包含了完整的API文档,帮助开发者理解并使用Titanium框架的各种功能。...

    前端开源库-faster-titanium

    在解压的`faster-titanium-master`文件中,你应该能找到项目的源代码、文档、示例以及相关的配置文件。通过阅读源代码和文档,你可以更深入地了解如何将这个库集成到你的项目中,以提升应用的性能。同时,参与社区...

    Cisco_N7K模拟器Titanium6.1.1安装方法.docx

    Cisco N7K 模拟器 Titanium 6.1.1 安装方法 本文档将指导用户如何安装 Cisco N7K 模拟器 Titanium 6.1.1,包括虚拟机的设置、模拟器的连接、TFTP 服务器的建立、升级安装包的传输、系统文件的更新等步骤。 一、...

    Titanium plugin开发初探

    【钛合金(Titanium)插件开发初探】 在移动应用开发领域,Titanium 是一个流行的选择,它允许开发者使用 JavaScript 来构建原生的 iOS 和 Android 应用。Titanium 的核心理念是通过跨平台的 JavaScript API 提供与...

    titanium-appcelerator-progress-view, 在 Titanium Appcelerator项目中,要使用的自定义进度视图.zip

    titanium-appcelerator-progress-view, 在 Titanium Appcelerator项目中,要使用的自定义进度视图 进度视图这是一个进度视图,显示你的应用程序的某些状态。 你可以设置加载,成功和错误状态。只使用三行代码,你就...

    Titanium Mobile API

    ### Titanium Mobile API 知识点详解 #### 一、Titanium Mobile API 概述 Titanium Mobile API 是一款由 Appcelerator 公司提供的用于跨平台移动应用开发的强大工具包。该工具允许开发者使用 JavaScript 编写应用...

Global site tag (gtag.js) - Google Analytics