Appcelerator 与 Android SDK

Posted

技术标签:

【中文标题】Appcelerator 与 Android SDK【英文标题】:Appcelerator vs Android SDK 【发布时间】:2011-06-30 06:57:47 【问题描述】:

我一直在看 appcelerator 似乎还不错!毫无疑问,appcelerator 的优势之一就是它对多平台的支持。我有兴趣在以后构建一个 android 应用程序,也许还有一个 iphone 应用程序。因此,目前支持多个平台并不重要。

如果您不考虑支持多平台而只专注于 android 开发。 appcelerator还有优势吗?它是否缺少“Android sdk”的任何功能?

(当我说“Andorid sdk”时,我的意思是使用 Eclipse 和原生 Android sdk 进行开发,如果有意义的话)

【问题讨论】:

【参考方案1】:

Appcelerator 有很多支持,而且非常易于使用。它现在支持 100% 的原生 api 调用。他们也有非常好的文档。

【讨论】:

【参考方案2】:

我们在开始我们的 Android 项目时查看了 Appcelerator。我们知道接下来我们必须做一个 ios 客户端,所以 Appcelerator 很诱人。

我们决定不走这条路,因为它不支持每个设备的所有原生功能。

例如,我们很早就决定在 Android 中的用户界面需要一个小部件。 Appcelerator 不支持该功能,因为它特定于 Android。 [这是几个月前的事了——你可能想再检查一次]。

在用户界面上妥协对我们来说太过分了。我们决定将 C/C++ 用于应用程序逻辑并使用 Android SDK 作为用户界面。

我们的应用现在有两个部分:“大脑”尽可能多地使用 C/C++ 和用于 UI 的原生(Android/Cocoa Touch),以利用 UI 体验。

当然适用于可以集成 C/C++ 的平台。

分离建议:首先设计您的用户界面,然后找到可以实现它的工具。用户对便携式设备中的 UI 有很高的期望。尽早妥协可能是您项目的 KOD。

[编辑] 我经常看到有人对这个问题投赞成票。我想更新一下我们在过去两年中学到的东西:

将 C/C++ 用于我们应用程序的公共部分已经得到了回报。它确实需要稍微复杂的构建过程,但如果共享的代码很复杂(如我们的例子),则节省的成本是巨大的。 对于用户界面部分,我们开始研究混合应用程序(html 中的一些 UI 元素)。关于 HTML 界面仍然存在争议(Facebook 和 LinkedIn 是两个迁移到 UI 的本地代码的),但也有一些报告说,如果仔细选择它就可以工作。 Flipoard 对此进行了精彩的演讲;带幻灯片here。

2014 年 10 月更新

2014 年 3 月,Smashing Magazine 发表了一篇优秀的文章,比较了原生 iOS、原生 Android、PhongeGap (Cordova) 和 Appcelerator Titanium。它们展示了在每个环境中开发一个简单的应用程序。

这是the last part of the series。在这部分的顶部有指向该系列前面部分的链接,在底部是方法的比较。最后还有来自读者的有趣的cmet。


2015 年 5 月更新

这个问题仍然经常得到支持,所以我想分享自我写下答案的第一部分以来我们所做的工作。

我们现在正在开发一个也有网络客户端的项目。我们现在有了 iOS 客户端、Android 客户端以及 Web 客户端。

javascript 是 Web 客户端的自然选择。

由于我们希望在这些客户端之间共享尽可能多的代码(在业务逻辑层),这意味着我们需要找到一种在 iOS 和 Android 中运行 JavaScript 代码的方法。

这就是我们最终要做的。

这是我们如何处理它的摘要:

对于所有客户端:所有数据结构都使用Google's protobuf 定义。这允许为 iOS 和 Android 自动生成序列化/反序列化代码。 iOS:在 JavaScriptCore 的帮助下运行 JavaScript 代码(一个很好的概述 here)。 Android:借助 Google 的 V8 引擎运行 JavaScript 代码。

JavaScript 和 iOS/Android 层之间的桥梁可能是一个瓶颈,尤其是对象的序列化。我们必须优化一些东西并吸取一些教训才能避免麻烦。

总的来说,体验是积极的。通过在所有客户端共享代码,我们节省了大量时间。

如果我不得不开始另一个像这样的项目(需要与网络和移动客户端共享代码),我也会看看what Google did for inbox。我们开始时它不可用。看起来很有希望。


2015 年 8 月更新

世界一直在转动......

如果我现在必须启动一个新的移动应用程序,我也会好好看看 React Native。

它基于 JavaScript,更轻松地连接 Web 和移动开发。

有一个great tutorial in Ray Wenderlich's site。


2016 年 2 月更新

我的跨平台开发候选名单只有两个:

ionic React Native

我一直在关注ionic,因为我们的 Web 应用程序使用 AngularJS 和 ionic (Cordova + AngularJS)。 React Native 将迫使团队学习另一个框架(当然,如果您的 Web 应用程序使用 React,则说法相反)。

尽管如此,我会认真考虑React Native,甚至不得不学习另一个框架,因为报告的应用程序的性能和外观。来自 React Native 的网站:

使用 React Native,您可以使用标准平台组件,例如 作为 iOS 上的 UITabBar 和 Android 上的 Drawer

如果您现在开始,我建议您花时间至少完成他们的教程,以便您更好地了解每个框架。每个教程可以在一到两个小时内完成:

ionic tutorial React Native tutorial

对于更简单的方法:Smashing Magazine 刚刚发布(在我编写此更新时)a good article 展示了如何使用本机导航元素使应用程序感觉(嗯...)原生,同时使用 Web 视图渲染内容。本文详细介绍了如何使 HTML/CSS 在移动设备中可用(它不仅仅是推送您已经拥有的 HTML/CSS)。

【讨论】:

为此 +1 - 当使用像 Appcelerator 这样的工具时,您最终会得到最低公分母解决方案。并且用户对移动应用的期望太高而无法成功。 很高兴成为您的第 30 票。这是开始思考与平台无关的移动开发的一个很好的入门书。出于好奇,您对 2020 年的 Ionic 和 React Native 仍然持积极态度吗? @elrobis:谢谢!一般来说,我仍然会缩小到这两个。话虽如此,我会平衡应用程序的复杂性。一个复杂的应用程序可能会从一开始就采用原生方式受益。对于更简单的应用程序,我认为两者都可以。关于复杂的应用程序和更大的团队:有一个 great article from Airbnb 关于他们为什么从 React Native 转移到原生开发。它写得很好,涵盖了几个方面,而不仅仅是通常的技术方面。【参考方案3】:

嗯,在新版本的 appcelerator (APPCELERATORSTUDIO 4.0) 中,您可以拥有合金项目,以及用于您的 UI (tss) 的 css 文件,因此实际上它们是真正可定制的。

大功告成

【讨论】:

【参考方案4】:

缺乏蓝牙支持是 Appcelerator 的一大缺陷,没有人提供有关路线图的线索。

edit : appcelerator 现在在 Tizen 3.1 中支持 BT

【讨论】:

【参考方案5】:

我对 Appcelerator 的体验似乎表明它们更像是一家 iOS 商店。恕我直言,他们的 Android 工具集非常缺乏。 ADT 支持在设备上构建和调试可视化 UI,而 Titanium Studio 不支持。几个月来一直有一个关于此的错误提交,并且继续延迟。如果您的重点是 Android,请使用适用于 Android 的 Google ADT 或 MOTODEV Studio。这些 IDE 非常好,并且被专业人士使用。

以上答案提供了一种开发移动应用程序的好方法。不要妥协于高质量的用户体验。

【讨论】:

【参考方案6】:

如果你只专注于为Android平台开发应用程序,我建议你应该使用原生Android(如你所说的Eclipse + Android SDK)而不是Titanium。

原因:钛适合

    您想快速开发应用程序,或者

    您的应用很简单,或者

    你看到 Java 太难了(也许 :p ),所以你选择了更简单的(Titanium 的 JavaScript)。

以下是您应该使用原生 Android 而不是 Titanium 的原因:

    您想开发一个复杂的应用程序,或者

    您想要自定义应用外观。这很重要。想象你为客户制作了一个应用程序,他们需要定制他们的应用程序以更引人注目。选择 Titanium 意味着您必须使用他们的控件,而后者缺乏自定义能力。如果使用原生安卓系统会更好,你可以自定义任何你想要的东西。

【讨论】:

在阅读有关此主题的答案后,我还有 1 个问题。 Appcelerator 有未来的职业吗?【参考方案7】:

我认为您使用 Appcelerator 是一个良好的开端,因为它使用 JavaScript 等。容易学习,但很好的例子。它还将使您能够使用相同的代码并访问 iPhone、iPad 应用程序。学习只使用 Android SDK 更加复杂。即使那样,您仍然需要开发以后的 iPhone 等应用程序。如果您来自网络背景,这是有道理的。有很好的视频可以快速学习。祝你好运

【讨论】:

【参考方案8】:

如果没有关于应用程序要求的任何细节,这是一个非常难以回答的问题。

我建议您快速查看API documentation of Appcelerator 以了解该框架提供的内容,并花点时间列出您的应用程序的基本要求,然后确定哪种工具最适合您的项目。

【讨论】:

以上是关于Appcelerator 与 Android SDK的主要内容,如果未能解决你的问题,请参考以下文章

更新 appcelerator 导致 android 应用程序崩溃

设置 iPhone 和 Android 的壁纸 - Appcelerator

在 Android 上使用 Appcelerator (ACS) 推送通知

Appcelerator:元素未添加到android中的视图中

ActionBar Android Appcelerator中的后退按钮[复制]

蓝牙模块 android & ios appcelerator