gpt4 book ai didi

android - 原生编程对移动开发有什么好处?

转载 作者:技术小花猫 更新时间:2023-10-29 10:32:29 24 4
gpt4 key购买 nike

我需要在一些主要的移动操作系统上为公司开发应用程序,特别是 iOS、Android 和 WP7。

我最初计划为三个不同的操作系统编写三个独立的应用程序——每个应用程序都使用 native SDK。

但是,这样做有什么好处吗?有许多跨平台工具可用 - Sencha、Phonegap、Rhodes 等。它们创建的应用程序跨设备的感觉如何?他们有什么样的硬件集成(相机、GPS、本地存储等)?

如果这样做有任何好处,我没有时间限制并且绝对没有问题开发三个 native 应用程序。

编辑:万一重要,应用程序将同时具有在线和离线功能。

最佳答案

免责声明:我一直在跟踪您提到的跨平台工具,但从未用它们构建过任何东西。如果您通读这篇文章,您可能会猜到我目前主要是一名 Android 开发人员。

答案是:视情况而定。原生应用程序当然有优势,但问题是你是否关心(或足够关心)这些优势会导致为多个平台开发的开销。由于您没有详细说明您计划构建的应用程序类型,因此我将向您简要介绍我所知道的内容。

我将假设您在谈论基于 HTML 的跨平台解决方案(例如 PhoneGapSenchaRhodes )而不是像 Corona SDK 这样的面向游戏的跨平台平台或 Moai也不是总是有趣的 Mono 通过 MonoTouchMono for Android .我也排除了 Titanium不支持 Windows Phone。

我看到的原生和 HTML 跨平台解决方案之间的一些差距如下:

  • UI熟悉
  • 性能(尤其是 UI)
  • 兼容性
  • 调试
  • 平台 API

  • 用户界面熟悉度

    每个平台的用户都对事物的运作方式建立了一定的期望。 iOS 中的应用程序通常具有某些 UI 范式(顶部带有左侧后退按钮的栏,圆 table /列表 UI 等),Android 中的应用程序可能有另一种(例如 ActionBar 类似,但不完全相同)与 iOS 栏或上下文菜单的长按项目相同),Windows Phone 用户又是另一个(图块和全景 View )。如果您生成相同的 HTML UI,您可能无法利用它。对于通常不花时间学习多个平台的用户来说,那些熟悉的 UI 模式使应用程序更加直观和舒适。

    性能

    native 的另一个优势是性能,尤其是与 UI 相关的性能,即原始图形渲染能力或只是计算。如果您有简单的 UI,这可能无关紧要,但如果您有复杂的动画 UI,那么有些事情最终可能会不那么顺利。在 Android 中尤其如此,在 Android 中,您拥有大量设备,包括一些功率相当低的设备。

    兼容性

    使用 HTML 跨平台工具的另一个缺点是不同的手机处理 HTML/CSS/JavaScript 的方式不同。这很有趣,因为这是一把双刃剑。一方面,HTML 本质上是跨平台的,这很棒,另一方面,您仍然存在与设备相关的烦人的问题。在 Android 中尤其如此,您拥有如此多的不同设备,并且制造商喜欢修补 WebView 的实现。出于某种原因。您最终会遇到一些小错误,某些设备会做一些奇怪的事情。如果你完全原生,你往往会有更好的兼容性(当然,代价是投入更多的工作)。也往往缺乏对旧版 Android 的支持。

    调试

    在移动平台上调试 JavaScript 并不是最美妙的体验。您最终会在控制台上进行大量日志记录。这是可行的,但肯定不如逐行进入您的代码那么好。在这方面似乎取得了一些进展(例如,参见 this tool called weinre)但我无法评论它有多好,因为我还没有开始深入研究它。

    这种调试不仅更难,而且发现错误也更难。 JavaScript 代码中的错误不会出现在日志中,除非您手动捕获并记录它们。你最终可能会默默地失败。

    平台 API

    一般来说,你提到的大玩家都有相当不错的硬件支持。您提到的相机、GPS 和本地存储等功能在对应用程序开发人员很重要的功能列表中名列前茅,因此他们将它们包含在内。要获得完整的功能列表,您可能想要访问每个功能的网站(例如,这里是 PhoneGap's high-level feature support chart by platform),但通常您想到的大型“电话功能”都在那里。即便如此,还有很多更复杂的事情,据我所知这些框架没有做或做的不好,特别是与手机功能无关而与平台相关的事情。线程就是一个例子。

    关于android - 原生编程对移动开发有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8192866/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com