挣扎在本机和手机之间,简单的应用程序需求

我将开发一个本地(意思是浏览器中的 没有)移动应用程序。因为我是一个网络开发者,我在挣扎着决定是否应该尝试 Phonegap 或者只是用 java 或 Objective-c 构建一个本地应用。

应用程序的要求很简单。GPS/wifi 定位,Facebook 集成,我想我需要一个数据库来处理一些特定应用程序的 Facebook 好友关系。比如游戏中的高分,诸如此类。

我是一个网页开发人员,目前既不懂 java 也不懂 Objective-c。我以前从未使用过 Phonegap,所以我不知道它是否能够满足我的需求。

所以我的问题是这样的: 我可以在我的应用程序中使用 Phonegap,还是我需要进入一种新的语言?

31990 次浏览

如果您的应用程序没有动画效果和简单,我宁愿创建一个网络(Phonegap) cz 在较少的时间,我们可以启动多种类型的移动操作系统。 如果你的应用程序包含更多的 UI 效果和动画,那么最好使用本机。

即使你是在 webview (Phonegap)中开发的,你也需要学习 Android 和 iOS 中的一些基本步骤

Phonegap 在设备 中的表现如何

伊俄斯 Ios webview 中的动画和视图加载是搁浅的而且很好,动画效果可以清晰地观察到

仿生人
在运行 html 代码时,我们不得不考虑 Android 的设备版本和设备公司,Android 中一些高配置设备提供了更清晰和高效的动画显示,但是一些设备(大多数是旧版本和一些公司设备)不能提供良好的动画效果,渲染效果因设备而异,

上次我研究 PhoneGap 的时候,它全部是 html、 css 和 javascript。所以,你可能会觉得很自在。PhoneGap 可以处理 GPS 定位,见 本文摘自 PhoneGap 的文档。是否你想拿起 Objective C 将取决于你拿起新语言的速度,因为它有点偏离网络开发。

相关阅读:

这篇文章的大版本也可以找到 译自: 美国《科学》杂志网站(http://www.gajotres.net)原文地址: http://www.gajotres.net 原文地址: http://www.gajotres.net 原文地址: http://www.gajotres.net 原文地址: http://www.gajotres.net 原文地址: http://www.gajotres.net 原文地址: http://www.gajotres.net,要透明的是它是我的个人博客。

混合应用 VS 原生应用

混合应用程序:

赞成:

  • 更快的开发,特别是如果你是一个长期的网络开发者。
  • 可以在每个可用的平台上使用1种语言。当然,这需要一个 Phonegap 包装。您不需要学习 Objective C、 Java 或 C # 来进行任何开发。您只需要理解 Phonegap 实现的基本知识。你需要玩一下上面提到的语言,但是你不需要理解它们。
  • Phonegap 可以提供一些本地功能,比如 iOS 本地标签栏或 Android 本地标签栏等等。
  • 较低的预算成本和庞大的支持者和开发者社区。
  • 一个混合的应用程序提供了两种方法的许多优势,一种是访问最常见的设备 API,另一种是广泛的设备覆盖面,同时不需要专门的技能,更大的预算和更长的时间来推出更典型的完全本地化的应用程序。

缺点:

  • 过一段时间你就会尿血了,不管是字面上还是比喻上。
  • 移动电话(甚至是今天的平板电脑)的速度还不足以平稳地运行一个混合应用程序,移动 JavaScript 功能充其量只能是基础。Android 平台是一场噩梦,页面转换不能顺利进行,更不用说缺乏 CSS/CSS3实现。如果你认为原生 Android 2.X 和4.X 有区别,看看 Android 2.X 糟糕的 JavaScript/CSS 实现。IOS 表现更好,但仍然缺乏 CSS3实现,你更好的页面过渡。为了使这个简短的本地应用程序将始终有一个更好的用户体验和一般感觉。
  • 你将花费更多的时间修复应用程序,然后建立它。为每一个平台创建一个应用程序是一件痛苦的事情。不同平台上的浏览器并不统一支持所有最新的 HTML 特性和 API,这使得开发和测试成为一个挑战。
  • 如果你没有一个好的设计师,甚至不要尝试建立一个应用程序; 外观就是一切。
  • 如果你不知道自己在做什么,你的应用很有可能不会获得苹果应用商店的许可。甚至谷歌应用商店将禁止你的应用程序,如果他们发现第三方 PhonegapPayPal 插件。

原生应用程序:

赞成:

  • 一个本地化的移动应用程序可以产生最好的用户体验ーー快速和流畅,可以让你最好地访问设备功能,并且可以在应用程序商店中找到。
  • 毫无疑问,本地应用程序可以完全访问底层移动平台。本地应用程序通常非常快速和优化,使他们的高性能应用程序或游戏的伟大。这已经足够了。

缺点:

  • 更大的预算,你将需要至少一个/s 的人与 Java 和目标 C 的知识,甚至 C # ,如果你想要一个 Windows 移动应用程序。是的,你可以自己学习,但不要生活在幻想中,你会在很短的时间内做到这一点。在其他情况下,选择 Java。Java 的语法类似于其他可用的语言,所以很容易从 C # 跳转到 Java,反之亦然。目标 C 是它自己的世界。它有一个非常罕见的语法。
  • 你可能需要更长的时间来发展所有这些,时间就是金钱。这取决于应用程序的复杂性。

在你的情况下,如果你有一个好的网页开发/设计技能和/或有一个好的设计师,你应该选择一个混合应用程序。只有当这个应用程序将是一个复杂的本地。你想要的一切都可以通过一个混合应用程序来实现。你会发现一个伟大的支持社区。

混合应用

我之前没有提到的是你在这里要特别小心。即使你是经验丰富的开发人员,你会发现很多问题你无法解决。混合开发不应该被误认为是基本的 Web 开发。

每个移动平台都有自己的一系列问题,更不用说移动电话根据设备的不同而表现不同。如果可能,总是创建一个应用程序,工作在较慢的设备,因为本地应用程序将成功地工作在几乎任何设备。

还有最后一件事,当创建混合应用程序时,应用程序开发将占用你大约30% -50% 的时间,其余的时间用于特定的平台调试和学习。相信我,即使经过几年的移动开发,有时我也会面临一些问题,我无法独自或者足够快地解决它们。

因此,在选择移动框架时要小心,选择2-3,花几天时间阅读它们。

连结

这里有一些链接可以帮助你做出决定:

PhoneGap + jQuery Mobile 1.4教程 -这是 PhoneGap 和最新版本的 jQuery Mobile 的分步教程

PhoneGap + jQuery Mobile 1.4教程-MacOS version -这是在 MacOS 上部署 PhoneGap 的分步教程。JQueryMobile 部分已经在前面的文章中介绍过了,没有必要重复。

JQuery Mobile vs Sencha Touch -jQuery Mobile Sencha Touch 比较

JQuery Mobile vs Kendo UI -jQuery Mobile Kendo UI 比较

7个最著名的 HTML5移动框架 -Name 说明了一切

7个鲜为人知的 HTML5移动框架 -Name 说明了一切

在我看来,使用 Phonegap,你只需要开发简单的应用程序,仅此而已。文档是不够的,正如其他人所说,你将花费更多的时间来修复 bug 和寻找插件,而不是构建你的应用程序。我会努力学习 Android 或者 iOS 或者别的什么,把它看作是你时间的 投资。(是的,我的评论有点偏颇)。

检查使用 离子的,由 angular.js 支持,以抵消在已接受的答案中提到的一些缺点。启动员工目录应用程序的教程: http://coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/

这完全取决于你的需求

在发布了我的第一个应用程序几个月之后(原生 Android,数据库驱动,安静的连接应用程序) ,我决定重写我的应用程序使用 phonegap (因为我想克隆应用程序到 iOS,所以为什么不在对象程序,而不是 javascript

在 Android 上,我这个 Java 开发人员花了3周时间从头学习和编写代码。为了如何让 ListAdapter 与我的服务器的 Restful Service 同步,如何对应用程序进行主题化(在我看来非常困难,特别是涉及到透明、边框等特殊效果时) ,以及如何有效地构建代码库(如果你熟悉 Java,你会发现所有的类都是相互耦合的,因为这是大多数教程所描述的) ,我不停地思考

在 Phonegap,一切都在一周内完成。CSS,html,与 onsenuiangular使图形用户界面的发展就像大约一年级学生的作业和主题只是一块蛋糕。我不需要在真正的设备上运行它,只需要在开发过程中使用浏览器,更改代码和刷新就足够了。Angular提供了与 DOM 的双向绑定,这在收集和显示数据时非常有用。例如:

<ul ng-each="for sentence in sentences" >
<li>\{\{ sentence.title }} </li>
</ul>

当变量 sentences更改(从服务器检索)时,DOM 也会自动更改。然而,javascript 只是 javascript。我发现自己在调试应用程序的时候有很多困难,特别是在用 PouchDB 做 MapReduce 函数的时候(大错特错,今晚不得不回到 cordova-sqlite-plugin) ,而且大多数时候,我必须阅读日志来找出问题所在(Chrome 的工具和 Firebug 无法捕捉到断点)。此外,重新构建应用程序(同样是 javascript)也很困难,所以如果一开始不仔细组织代码库,最终可能会弄得一团糟(而调试又是一个真正的痛苦)。PhoneGap 也是基于网络的,所以有时候,你会听到“因为在这个平台上,它不支持那个什么什么的”(例如,localStorage) ,如果你找不到任何好的插件,你必须支持它。

除了基于 Web 的存储的局限性,PhoneGap 在数据库驱动的简单 GUI 应用程序中表现得非常好(而且目前大多数数据库驱动的应用程序都有一个简单的 GUI)。如果你要开发这种应用,那就坚持下去

还有 AppGyver 类固醇,它将 PhoneGap 和 NativeUI 很好地结合在一起。

使用 Steroid,你可以在 PhoneGap 应用程序中添加本地标签、本地导航栏、本地动画和过渡、本地模态窗口、本地抽屉/面板(Facebook 侧面菜单)等。基本上,在 CSS + JS 不能切割的任何地方,Steroid 都会进入本机层来执行操作。

此外,使用类固醇,您可以(尽管您不必)使用多页面架构(多个 webview)而不是单一的。对于单页面应用程序来说,所有像过渡这样的东西都只是 CSS 工作区,正如 Mani 所说,即使是现代的平板电脑和手机也不能快到让它们变得流畅。当它是一个手机间隔应用程序时,尤其是当你有一堆进程在运行时,或者当你正在滚动因为 JS 进程被暂停(在 iOS8中被修复)时,它总是显而易见的。

使用多页体系结构意味着您可以获得100% 的本机性能(因为这些部分实际上是 本机的)。与 phonegap 不同,您将获得一致的用户界面行为和更容易的调试(使用单个页面应用程序,通常很难在应用程序中重新创建特定的状态)。多页面使您的应用程序的开发和维护更加容易,因为您的代码库保持清洁。

检查演示: http://youtu.be/oXWwDMdoTCk?t=20m17s

我也发现每一个好文章在这里 http://www.comentum.com/phonegap-vs-native-app-development.html,它比较这两种方式在不同的类别。

摘要如下:

  1. 接口设计 (相同)
  2. 成本 (混合动力有优势)
  3. 开发时间表 (混合优势)
  4. 用户体验和性能 (本地具有优势)
  5. 可维护性 (相同)
  6. 无限制 (本机具有优势)
  7. 安全性 (相同)
  8. 支持和资源 (本地具有优势)
  9. 工具和调试 (本机具有优势)
  10. 平台无关 (混合优势)
  11. 受欢迎程度 (相同)

@ Gajotre 写了一个很棒的回复,但是自2012年以来,混合应用程序的性能已经有了长足的进步。我回答了一个关于2017年混合应用和本地应用开发的差异的 相关问题

这个故事的寓意是,混合应用程序开发在过去几年中已经有了巨大的改进,但是它仍然不能在某些用例中与原生应用程序相匹配。

有了 Ionic (首次发布于 二零一三年)和 React Natural (首次发布于 二零一五年)这样的工具,构建具有类似本地组件的混合应用程序比以往任何时候都要容易。混合应用程序现在更快,缺陷更少,并且能够与本地用户界面进行更深入的交互。

混合应用程序性能的门槛比几年前要高得多,但是仍然有一个点需要用本地语言开发应用程序。

原答案:

是的,人们普遍认为混合应用程序不如原生应用程序 虽然这可能会令更熟悉的开发人员感到沮丧 网络技术,它确实有很好的理由:

  1. 无法与本机组件交互 : 尽管存在诸如 cordova-plugin-statusbar之类的插件,但是仍然存在局限性 使用 web 与本地组件进行交互和操作 这是我个人经历过的一个重要的(也是令人沮丧的)问题 是无法在他们的键盘顶部输入 键盘的动画。这听起来像一个无关紧要的问题,直到你看 在一个应用程序,这是一个重要的功能,如在一个聊天应用程序 就像 Slack。
  2. 300ms 延迟尽管现代浏览器已经开始进入这一阶段 完毕, 混合动力应用程序的第二个延迟的一小部分使应用程序 感到缓慢和非本地化。这个问题正在变得越来越少的因素,因为 更多的用户采用变通方法,例如 FastClick.js 和一些 像 爱奥尼亚这样的框架消除了它 默认情况下。
  3. 仇恨者是对的(有点) : 虽然混合应用程序开发已经取得了很大进展,但仍然存在一些小故障和滞后 只是不存在于本机应用程序中的函数 转换、应用程序切换和电池寿命仍然是常见的领域 错误的出现可能会持续一段时间,即使它们已经出现 开始变得越来越不明显。
  4. 有一些很棒的原生语言解决方案 : 随着像苹果的 斯威夫特这样的新语言的出现,使用原生语言变得更加容易 也就是说,像 < a href = “ https://facebook.github.io/response-national/”rel = “ nofollow noReferrer”> React 这样的工具 原住民陷入灰色 通过允许开发人员在 友好的技术,如 JavaScript,但编译成本地代码。

这个故事的寓意是,它真的取决于什么是重要的 你的特定用例。混合应用程序已经成为一个可行的选择 不再是一个令人尴尬的插曲。相反,仍然有 与本地用户体验交互的一些小方面还没有完成 除非使用本地应用程序,否则是不可能的。

总的来说,我建议制定出您的项目,并确定您的 应用程序需要任何原生应用程序的好处 Ionic View 应用程序很容易组装成一个 你的应用程序的基本样机,并在一个真正的设备上测试是否有一个 混合应用程序将为您工作。

这里一个被忽视的重要选项是使用 Xamarin进行开发。

虽然它没有帮助利用 OP 的网络开发人员的技能,它有很多优点相比 PhoneGap 和几乎没有缺点。

Xamarin VS PhoneGap 优点:

  • 成熟的框架提供了对大多数(如果不是全部)本机的访问 流动装置的特点。
  • 对于所有移动设备,只学习一种语言(对于大多数开发人员来说是 C #) 平台。
  • 在 iOS/Windows Mobile 上有一个本地应用程序的性能(因为应用程序被编译成本地代码) ,在 Android 上有一个非常接近的性能(它仍然编译成一个本地 APK,但必须有一个可以翻译的薄包装。NET 类库 API 在运行时转换为 Android 类 API)。
  • 由微软维护,支持整体慷慨的质量 平台本身和开发工具。例如,您将使用 Visual Studio,它可能是最好的 IDE,并且现在有免费的 Community Edition,其中包含 Xamarin 开发所需的所有特性。

Xamarin VS PhoneGap 的缺点:

  • 纯 Web 开发人员需要一些时间投资才能切换到 C # 和 Xamarin 类库 API。

因此,Xamarin 是当今跨平台开发的一个非常可靠的选择。