【问题标题】:Downsides of using Appcelerator Titanium (or equivalent)?使用 Appcelerator Titanium(或同等产品)的缺点?
【发布时间】:2011-10-24 23:55:12
【问题描述】:

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

这里的每个人都可以想到使用 Titanium 的理由。出于反对使用 Titanium 的原因,我Titanium 生成的“本机”应用程序的性能可能不如使用 iOS 的 Objective-C 编写的应用程序好。差异会有多大?还有其他不使用 Titanium(或同等产品)的原因吗?

注意:我可能会写 Titanium,但原因可能不仅仅是 Titanium 特定的。支持使用平台语言(例如 Objective-C、Java)进行编码的所有理由都符合要求。

【问题讨论】:

    标签: android ios mobile cross-platform titanium


    【解决方案1】:

    善:

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

    坏人:

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

    • 使用了“Native Widgets”,但只是名义上:有一层 它们与您的代码之间的逻辑和抽象;而这一层 改变他们的行为并降低他们的速度。不同的是 在展示应用中可见。

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

    • 创建了一个 wiki,该 wiki 已过时。仅编辑
      允许员工使用。

    • Github 项目未启用 wiki。

    • Appcelerator 不是真正的开源:他们不接受来自社区的贡献: github上的titan_mobile项目有很长的open pull列表 请求。

    • 帮助论坛软件存在许多技术和设计缺陷。

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

    • 工作人员很少在问答论坛中回答问题。没见过
      几个月。

    • Showstoppers 连续出现在“所有的小间隙”中:

    • 在 iPhone 4 上正确显示图像

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

    • 虽然平台确实同时支持 iOS 和 android,
      库/框架没有。大量运行时测试(if/then's) 在适用于 android 和 iphone 的应用中需要。

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

    • “与销售人员聊天”应用未参与。

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

    • 用定价拉扯真相并进行诱饵和转换:30% 的销售
      仅适用于年度会员,不适用于月度会员。博客
      帖子和营销材料没有说明这一点。仅在结帐时 显示出来了。

    • [见于 2011 年 8 月 13 日] 问答论坛被破坏的另一种方式:
      搜索结果被丢弃:每页结果都会对其命中进行排序 从最旧到最近,在页面底部。转到下一个 结果页面(即 51-100),再一次,1 岁的点击是
      首先,底部是 6 周大。

    我未回答的问题:

    [未显示的七个未回答的问答问题:我不想被 Appcelerator 工作人员识别为个人身份 并接受低于标准的待遇。]

    结果:

    我花了很多时间在没有文档的情况下尝试发现 API,并尝试破解解决方法。这段时间被浪费了,最好只是学习用 XCode 和 Objective-C 制作应用程序。

    【讨论】:

    • 我要感谢 Rachel,因为这篇文章已经有一年了,但很多抱怨都是关于公司的,而不是产品。诸如“使用本机小部件,但只是名义上的”之类的内容是不准确的。
    • 对该产品的一个抱怨是:自从引入 NodeJS 以来,在代理后面使用它是一场噩梦。我们正在评估这是一个潜在的工具。虽然在公司网络之外它很好,但在代理后面它不是没用的。寻求支持并没有帮助,因为他们似乎没有处理基于代理的问题的经验。
    • 在修复所有基于代理的问题方面已经完成了大量工作。这些现在应该修复了,但如果有人遇到了,请直接与我联系。
    • 我想提供的是,这些原因中的许多在这一点上也已经过时了。我们非常开放源代码,我们确实接受了许多社区拉取请求,我们非常重视 Apple 报告的问题,自发布以来文档已经进行了认真的检查,等等。
    【解决方案2】:

    差异会有多大?

    AFAIK,Titanium 会生成 Objective C,所以除非他们的东西效率极低,否则我不认为速度会成为主要问题。

    还有其他不使用 Titanium(或同等产品)的原因吗?

    嗯,这取决于你如何定义“等效”。

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

    使用 PhoneGap,您可以编写 HTML、CSS 和 JavaScript,就像编写 HTML5 离线应用程序一样。 PhoneGap 所做的就是把它变成一个可安装的包(例如,适用于 Android 的 APK),并让您选择加入专有 API 来获取特定于设备的内容。他们的期望是简单地填补移动设备上的 HTML5 支持的内容和移动设备上的原生应用程序支持的内容之间的“空白”。哎呀,它甚至以他们的名义。 :-)

    因此,您所编写的技术与您将用于基于 Web 的应用程序的技术相同,它甚至可以共享一些客户端代码。你可以使用任何你喜欢的移动框架(例如,Sencha Touch、jQuery Mobile)。而且,如果有一天应用商店支持 HTML5 离线应用,如果您不严重依赖设备集成功能,您甚至可以完全放弃 PhoneGap。

    Titanium 允许您使用 JavaScript 编写代码,但标准合规性主要到此为止。您对所有内容都使用专有 API,包括整个 UI。就个人而言,我宁愿支持更流行的马——在这种情况下是 HTML5,而不是专门的 PhoneGap。如果没有其他原因,聘请精通 HTML5 的开发人员要比聘请精通 Titanium 的开发人员容易得多。

    PhoneGap、Titanium 和任何其他选项(例如 Rhodes、Flash/AIR)都不能为您提供所有设备功能。这些引擎的可扩展性会有所不同——我知道 PhoneGap 有一个插件模型,Flash/AIR 几乎只是您从 Adob​​e 获得的,我不确定是否还有其他引擎。

    Titanium 有一个优势:您可以获得接近原生的 UI,而不是基于 HTML 的 UI。 (我之所以说“接近原生”,是因为他们的一些小部件不一定在所有平台上都有原生等价物,因此它们会根据需要自行推出)对于某些应用程序和某些受众而言,仅此一项就可能使事情对 Titanium 有利。

    【讨论】:

    • Appcelerator 有一个插件模型。
    • 您将获得特定于平台的本机控件
    • @Aaron Saunders:正如我所写,您有时会得到“特定于平台的本机控件”。 Android 没有本机按钮栏、工具栏或“封面流视图”。我并不是说那些的 Titanium 实现在 Android 上一定看起来很糟糕,但你不能称它们为“原生”。
    • 已经使用过专有的,如果你打算走跨平台的路线,请使用钛或电话间隙。不要使用任何封闭源代码。话虽如此,CommonsWare 就在这里,我只想补充一点:如果你要做大量手机的事情,或者你有非常挑剔的设计师,那么就去本地化吧,你将拥有该平台,如果你只是在移动设备上做网站类型的事情并且你想要一个应用程序,我也会建议电话差距,只是因为标准 - 就像 CommonsWare 所说的那样。
    【解决方案3】:

    Titanium/iOS 特定答案,我的 2c。

    原生 iOS 与 Titanium

    优点

    • 对于大多数事情来说,它几乎和原生一样快。
    • 编写工作原型所需的时间要短得多。
    • 如果您需要集成 javascript 遗留代码或库,只要它不使用 dom,它就可以工作。
    • 您的 javascript 代码需要间隔良好,并在需要的地方包含半列,否则编译器会报错并最终中止构建。
    • 您可以使用 Coffeescript 或任何其他编译为 js 的语言
    • 自动内存管理是一流的,在 objc 中获得相同的结果总是很耗时,有时还需要大量调试。
    • 您可以用本机代码编写自己的模块来扩展 Titanium 的功能。
    • 它是开源的。
    • 他们最近更改了支持服务,取消了 5 个应用程序的限制,价格更实惠。
    • 您可以在模拟器中运行应用程序时更改视图 js 代码,当您重新加载正在编辑的视图时会看到结果。这是一个福音:)(例外:我不知道重新加载 app.js 中的代码)

    缺点

    • 调试很痛苦。还没有试用 Titanium Studio,它可能是一个很大的改进。
    • 添加太多视图往往会比使用本机代码更快地降低性能。
    • Mac 上的 Titanium Developer 应用程序存在大量界面故障,您可能会发现自己经常重新启动它。
    • 在某些版本中,打印到控制台的调试语句被破坏。
    • 您经常会遇到跨平台抽象泄漏。
    • 论坛上的支持有点少,你会遇到的很多问题虽然不大,但还是很烦人。
    • 需要注意JSON的正确性,包含的解析器往往比较挑剔。使用 eval 始终是一种选择。
    • 编译时间和在模拟器中加载并没有那么快,钛 objc 相当大。

    【讨论】:

    • 第二个是“调试很痛苦”。我参与了 Titanium 移动应用程序开发,并且代码在 Android 上以意想不到的方式出现错误。 Java.lang.NullPointerException 到处都是,几乎没有什么可以指导我如何解决它。当我有更多的工作经验时,我会在这篇文章中添加我自己的答案
    【解决方案4】:

    与 Xcode、Visual Studio 甚至 MonoDevelop 相比,Titanium Studio 感觉很慢(真的很慢)、有问题(每天重新启动几次,甚至重新安装几次),当然你必须处理 JavaScript...我们发现在 Titanium 中开发的痛苦太大了,尤其是当你身边有称职的 iPhone 和 Android 开发人员时 -

    我们长期努力寻找跨平台开发的最佳选择,最终使用 Mono - Touch & Droid。太好了,我们确实在 iPhone 和 Android 之间共享了 80% 的代码,而且我们刚刚开始移植到 WP,进展顺利(再次共享 80% 的代码)。当然这不是一个奇迹修复——你仍然需要知道如何为每个平台开发。现在我什至喜欢 C# 和喜欢 Obj-C 一样多:-)

    显然,有些人会不同意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多