使用Appcelerator Titanium(或同等版本)的缺点?

在我们公司,推动跨平台(iOS和Android)的发展。 Appcelerator Titanium正在考虑(而且似乎是唯一正在考虑的),无需额外的开发时间即可实现多平台开发。

这里的每个人都可以想到使用titanium的理由。 由于使用Titanium的原因,我 Titanium产生的“原生”应用程序的性能可能不如使用Objective-C for iOS编写的应用程序的性能。 差异有多大? 是否有其他原因不使用titanium(或同等)?

注意:我可能会写titanium,但原因可能不仅仅是titanium的具体情况。 所有支持平台语言(如Objective-C,Java)编码的理由都是合格的。

好:

  • 可以使用非常简单的Javascript创buildiPhone应用程序。

坏:

  • 由于私人API调用,苹果一直拒绝一些Titanium应用程序,但Appcelerator没有回应请求帮助,也没有更新他们的SDK。 http://developer.appcelerator.com/question/123785/app-has-bee-rejected-by-non-public-api

  • “Native Widgets”被使用,但只是在名义上:他们和你的代码之间有一层逻辑和抽象; 而这一层改变了他们的行为并降低了他们的速度。 这个区别在Showcase应用程序中是可见的。

  • API文档永远是过时的。 (没有刷新的过程)。

  • 维基已经创build,这已经过时了。 仅编辑
    允许雇员。

  • Github项目没有启用wiki。

  • Appcelerator不是真正的开源:他们不接受来自社区的贡献:github上的titanium_mobile项目有一长串的开放请求。

  • 帮助论坛软件有许多技术和devise上的弱点。

  • 来自帮助论坛的电子邮件通知通常不起作用。

  • 工作人员很less在问答论坛上回答问题。 没有看到
    在几个月内。

  • 在“所有的小差距”中,不断出现的

  • 正确显示iPhone 4上的图像

  • 正确加载滚动列表中的图像

  • 尽pipe平台确实同时支持iOS和Android,
    库/框架没有。 在Android和iPhone上运行的应用程序需要大量的运行时testing(如果/然后)。

  • 不断发布新产品,但不修复现有产品
    和网站问题。 “新”产品在testing版和候选版阶段发布。

  • “聊天与销售”应用程序不参与。

  • Appcelerator不会删除过时的培训video。

  • 拉伸的真相和诱饵与开关与定价:30%的销售
    只适用于每年的会员,而不是按月。 博客
    post和营销材料不说明这一点。 只有在结帐时才显示。

  • Q&A论坛被破坏的另一种方式:
    search结果被丢弃:结果的每个页面都按从最旧到最近的顺序排列。 转到结果的下一页(即51-100),再次,1岁的命中是
    首先,在6周龄的底部。

我的未答复的问题:

[未回答的七个问题未回答问题:我不希望由Appcelerator工作人员亲自识别并获得次级待遇。]

结果:

在没有文档的情况下,我花了好几个小时试图发现一个API,并且发现了解决方法。 这一次浪费了,最好花在学习XCode&Objective-C的应用程序上。

差异有多大?

AFAIK,Titanium会产生Objective C,所以除非他们的东西效率低下,否则我不会期望速度成为一个大问题。

是否有其他原因不使用titanium(或同等)?

那么,这取决于你如何定义“等价”。

就个人而言,当我进入跨平台的应用程序,我期望我会使用PhoneGap。 这是一个原因:标准。

通过PhoneGap,您可以编写HTML,CSS和JavaScript,就像编写HTML5离线应用程序一样。 PhoneGap所做的就是将其转换为可安装的软件包(例如APK for Android),并为您提供专用的API以获取特定于设备的内容。 他们的期望是简单地填充移动支持的HTML5和移动支持的本地应用程序之间的“差距”。 哎呀,甚至是以他们的名义。 🙂

因此,你正在编写的是与基于Web的应用程序相同的技术,甚至可能会分享一些客户端代码。 你可以使用任何你喜欢的移动框架(例如Sencha Touch,jQuery Mobile)。 而且,如果有一天app store支持HTML5离线应用,如果您不太依赖设备集成function,甚至可以完全放弃PhoneGap。

titanium可以让你用JavaScript编写,但是标准的合规性在很大程度上就是在这里结束的 您正在使用专有的API,包括整个用户界面。 就个人而言,我宁愿支持一个更受欢迎的马 – 在这种情况下,HTML5比PhoneGap更具体。 如果没有其他原因,聘请精通HTML5的开发人员比精通titanium的开发人员更容易。

PhoneGap和Titanium,以及任何其他选项(例如,Rhodes,Flash / AIR)都不会给你所有的设备function。 这些引擎的可扩展性会有所不同 – 我知道PhoneGap有一个插件模型,Flash / AIR几乎就是Adobe提供的,我不确定其他的。

titanium有一个好处:你得到一个接近本地的用户界面,而不是一个基于HTML的用户界面。 (我说“接近原生”,因为他们的一些小部件并不一定在所有平台上都有原生的等价物,所以他们根据需要推出自己的)。对于一些应用程序和一些观众来说,这可能会倾向于Titanium的东西。

titanium/ iOS的具体答案,我的2C。

本机iOS与titanium

PROS

  • 对于大多数情况来说,它几乎和原生一样快。
  • 编写一个工作原型的时间要短一些。
  • 如果你需要整合JavaScript遗留代码或库,只要不使用dom就可以工作。
  • 您的JavaScript代码需要很好的间隔,并在需要的地方包含半列,否则编译器将会抱怨并最终中止构build。
  • 您可以使用Coffeescript或任何编译为js的其他语言
  • 自动内存pipe理是一stream的,在objc中获得相同的结果总是耗时且有时debugging密集。
  • 您可以使用本机代码编写自己的模块来扩展Titanium的function。
  • 它是开源的。
  • 他们最近改变了他们的支持,删除了5个应用程序的限制,更实惠。
  • 您可以在模拟器中运行应用程序时更改视图js代码,当您重新加载正在编辑的视图时,您将看到结果。 这是一个福音:)(例外:我不知道重新加载app.js中的代码)

缺点

  • debugging是一个痛苦。 还没有尝试过titanium工作室,这可能是一个很大的改进。
  • 添加太多视图往往会比使用本机代码更快地降低性能。
  • 在Mac上的titanium开发应用程序有大量的接口故障,你可能会发现自己很经常重新启动。
  • 在某些版本中,打印到控制台debugging语句被破坏。
  • 您经常会偶然发现跨平台的抽象泄漏。
  • 在论坛上的支持是有点轻,你会遇到很多问题不大,但仍然烦人。
  • 需要注意JSON的正确性,包含的parsing器往往是挑剔的。 使用eval总是一个选项。
  • 在模拟器中编译时间和加载速度并不那么快,titanium合金是相当大的。

与Xcode,Visual Studio甚至MonoDevelop相比,Titanium Studio感觉速度慢(真正慢),越野车(每天重启几次,甚至重新安装几次),当然你必须处理JavaScript …我们发现在titanium开发的痛苦太大,尤其是当你有能力的iPhone和Android开发周边所以,

我们长期以来一直致力于跨平台开发的最佳select,并最终使用了Mono-Touch&Droid。 我们确实分享了iPhone和Android之间80%的代码,而且我们刚开始进入WP的一个端口,这个进展顺利(再次分享80%的代码)。 当然这不是一个奇迹般的解决方法 – 你仍然需要知道如何为每个平台开发。 我甚至已经成长为像Obj-C一样多的C#:-)

显然,有些人会不同意。