xCode、Android SDK和Adobe Flex的比较

5
我将开发一个跨平台的应用程序,它将发布在IOS和Android上,并使用网络连接与服务器通信。该应用程序必须快速、可靠和响应灵敏。所以我的问题是:如果我选择使用Adobe Flex来构建这个IOS和Android的应用程序,那么会有性能问题吗?如果没有,那为什么人们要使用xcode或者android sdk?使用Adobe Flex相比xCode和Andoid SDK有哪些劣势呢?
5个回答

14

一般而言,如果您使用跨平台的“编写一次,构建多个平台”的工具,则可能会放弃利用某些(或全部)设备或平台特定功能的能力。实际上,您选择了最低公共分母的解决方案。也就是说,您只能使用所有目标平台可用的平台功能。

构建本机应用程序——也就是使用Xcode构建iOS应用程序并使用Android SDK构建Android应用程序——可以让您完全访问所有给定平台的特定功能和能力,从而确保在每个平台上提供最佳用户体验。

这是我的意见:本机应用程序更好,因为它们呈现给用户本机体验——一种对于他们作为该平台用户而言感觉熟悉的体验。当您选择使用跨平台工具时,您实际上正在选择在用户设备上提供不太理想的体验,但是您节省了一些时间(也许),以使您的应用程序上市。谁是赢家?

在我的工作中,我和老板有过一次关于这个问题的具体对话。我们故意使用本机iOS和Android应用程序,因为我们不想放弃平台特定功能。我们希望每个应用程序都能在其平台上提供最佳体验。我们明确同意不采用跨平台的解决方案。


哇,太棒了!“现在我的观点是:本地应用程序更好,因为它们提供给用户本地体验——这种体验会让他们感到熟悉,因为他们是该平台的用户。”——我真希望我能说出这样的话。 - Plastic Sturgeon
3
作为澄清的一点,针对Adobe的Flash平台。Adobe AIR 3引入了一种调用本地设备代码以通过Adobe AIR暴露的API扩展应用程序的方法。这个功能被称为原生扩展;并否定了使用AIR/Flash平台不能获得“完全访问所有给定平台特定功能和能力”的论点。 - JeffryHouser
@www.Flextras.com 确实很有趣。但是你仍然在调用本地代码,假设是 iOS 的 Objective-C。因此,在 iOS 下无法摆脱 Objective-C 来实现本地功能,这证明了我的观点。 :-) - Mark Granoff
@MarkGranoff 我也认为你必须使用Objective-C编写iOS的本地扩展;不过没有其他评论。 - JeffryHouser
2
我还要补充一点,在Air中,你可以访问很多硬件...但并非全部。基本上,任何跨平台常见的东西(加速度计、webkit、GPS等)都可以。当你需要访问Air未暴露的功能时,你可以编写小型本地扩展(使用ObjectiveC或Java),以公开所需的功能,然后通过你的Air应用程序引用它们。 - Brian Genisio

7
根据您正在开发的内容,Air是一个非常适合开发跨平台移动应用程序的平台。尽管最近有消息称Flash播放器不再为移动浏览器开发,但本地故事仍然强大。此外,看过原生的IOS、原生的Android和Flex开发后,当涉及到开发容易性时,Flex平台要好得多。具有数据绑定、可视状态管理、坚实的组件/皮肤模型、过渡模型等高级功能,它比iOS和Android领先一代或两代(在我看来)。
如果您正在使用Flex进行移动开发(iOS / Android / Playbook),则可以在所有移动设备上获得统一的外观/感觉。@MarkGranoff建议使用一种方法会降低用户体验,但我对此提出质疑。
虽然我同意Air中UI组件的开箱即用样式略显突兀,但我不建议任何人以这种方式构建应用程序。相反,创建一个类似于您的应用程序的应用程序。有许多应用程序不符合iOS或Android的本机外观/感觉,但从美学和UX角度来看仍然是优秀的。
对于在所有平台上看起来/行为相同的应用程序,确实有些话要说。我可以告诉你这个……用户并不在乎。如果它看起来好,感觉好,并且做了他们想要的事情,他们就会很高兴。
Flex Mobile SDK使用许多相同的UI范例(特别是在即将发布的SDK版本中),并且正在变得越来越好。我不会贬低它。使用类似Flex Mobile这样的东西可以节省大量时间和金钱。

3
您可以使用 Flex 编译为 iOS 或 Android 的 AIR 应用。AIR 的性能比 Objective C 或 Java 慢得多。使用 AIR 的优点是可以为两个平台提供一个代码库。但是,如果您拥有相关的技术知识,那么在各自的平台上开发,Objective C 和 Java 更适合。然而,许多成功的应用程序都使用 AIR 在 iOS 和 Android 上发布。如果您想知道它是否适合您,可以在 iTunes 和 Android Market 中查找这些应用程序,并查看它们对您的性能表现如何。 如果您的应用程序不是游戏,则很可能可以正常工作。如果您的应用程序是简单的游戏,它也可能可以正常工作。 还记得有其他跨平台开发工具可供选择,例如 phonegap 或 appcellerator: http://www.appcelerator.com/ http://phonegap.com/ 或者甚至是 Unity 3D: http://unity3d.com/ 更新: 自2011年11月发布此答案以来,Adobe 已经对 AIR 进行了重大改进,特别是对 iOS 和 Android。除非您正在做一些非常密集的任务,例如大型图像处理,否则性能问题可以忽略不计。 同样,Unity3D 也已经得到了很大的改进。对于 2D 或 3D 游戏来说,它是一个绝佳的选择。

0

如果您正在使用Air开发跨平台应用程序,您应该注意以下事实:

1)您无法访问本地功能(但是您可以使用Air Native Extensions来解决此问题)

2)性能比本机应用程序慢(但是您可以使用Starling框架在设备中使用GPU功率,从而大大提高性能!)

总之,使用AS3和Flex/Air SDK构建移动应用程序是您可以考虑的最佳解决方案,如果使用Starling,则性能比本机应用程序高得多!


-9

我认为你不能在iOS上使用Adobe Flex。另一个值得研究的跨平台解决方案是HTML5。如果你有能力,最好的解决方案可能是实现两次,一次使用xcode适用于iOS,一次使用Android适用于Android。


6
不正确的信息,Adobe Flex(以及Adobe Flash平台工具)已经有一段时间可以用于构建原生iOS应用程序。虽然曾经出现过与苹果开发者协议相关的短期问题,但苹果已更改了许可证,许多应用程序都是使用Flash工具构建的。最近,Flash构建的应用程序Machinarium成为了iOS游戏榜的榜首。http://machinarium.net/demo/ - JeffryHouser
1
你应该看看 Adobe Air。 - Bill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接