当然,我只会涉及到创业公司所在的市场中最常见的选择。主要原因是开发成本和建立团队的速度。年轻的公司需要最有效、最廉价、最久经考验的解决方案。
APP应用程序开发有两种基本方法:
- 原生应用
- 跨平台
一、原生
开发App应用程序的原生方法意味着公司/初创公司分别以不同的编程语言为每个平台实现应用程序。
iOS
所有原生 iOS 应用都是使用 Swift 或 Objective-C 语言编写实现的。所有新应用程序都是在 Swift 中专门开发的。Objective-C 仅用于支持遗留代码和库,在 Swift 中重构这些代码和库的成本非常高。“新派”的iOS开发人员通常只是表面上熟悉Objective-C。为了使用旧的代码库,为了使用 Obj-C 类,有通往 Swift 的桥梁。
简而言之,原生 iOS 开发的情况非常清楚,你需要 Swift。这并不奇怪,Swift最初是由Apple开发的,特别是iOS和MacOS开发。
Android
Android 应用程序主要使用 Kotlin 或 Java 开发。Kotlin 向后兼容 Java。对于用同一种语言编写的所有内容,您可以从另一种语言进行寻址。它是双向的。开发人员并不急于最终切换到 Kotlin,但越来越喜欢使用它从头开始开发应用程序。但是,与实际上不需要Obj-C的iOS程序员不同,Android开发人员绝对需要具有Java经验。
Kotlin是由圣彼得堡国立信息技术机械与光学大学的俄罗斯学生专门为Android开发需求而创建的。该语言更容易学习,也更容易访问Android SDK。这就是为什么它的社区发展如此迅速。
原生开发的好处:
- 该应用程序被集成到系统的 UI/UX 中。每个平台的用户都有自己的行为模式和习惯。本机方法允许使应用程序尽可能熟悉和方便。
- 性能。开发最大限度地使用特定平台的工具,从而确保应用程序的性能。本机代码与硬件完美配合,即使是复杂的应用程序,采用正确的方法,也将与预安装的应用程序的工作方式相同。我们可以保证界面的最大响应能力和良好的用户体验。
- 质量。通常,本机应用程序中的错误和崩溃要少得多。当然,开发人员也有责任,但为一个平台开发通常要容易得多。
- 没有限制。所有预安装的应用程序和大量操作系统元素都是使用平台持有者提供给您的相同工具开发的。本机代码可以毫无问题地访问摄像头、麦克风、GPS、加速度计、通知等。
- 本机应用程序更加灵活和可扩展。您可以安全地扩展功能,而不必担心应用程序会变慢并且出现故障。原生开发工具实际上没有无限的可能性。
二、跨平台
跨平台方法使用专门的工具投入使用,借助这些工具,您可以一次为多个平台实现应用程序。
PWA
PWA(渐进式Web应用程序)是一个跨平台的Web应用程序。此应用程序可以在任何设备上打开,但它使用浏览器引擎来工作。
谷歌正在积极推广PWA,并且在将这项技术集成到Android方面非常成功。Android已经可以执行所有JavaScript代码,并且几乎不受限制地使用设备的功能。如果谷歌继续以同样的速度游说PWA,那么它肯定会占据移动应用市场的一部分。
但是!我强烈建议目前不要使用 PWA 开发App应用程序。原因如下:
- 与Android不同,苹果对这项技术进行了大量限制。如果没有原生代码和插件,您将无法在亚马逊应用商店中发布它们。尽管苹果在Safari中支持PWA,但他们仍然充满敌意。你的应用必须伪装成本机。
- 性能更差。移动操作系统处理机器代码比JavaScript好得多。
- 所有浏览器限制也适用于PWA。尤其是在 iOS 中。
简而言之,PWA是一种新的有趣理念,将来可能会将本机应用程序推出商店,但到目前为止,问题多于答案。像谷歌这样的公司可以在应用程序的开发和支持上投入巨大的资源,但对于其他所有人来说,这是相当危险和不可预测的。
Hybrid Apps
混合应用更像是一种跨平台的本机应用开发方法。混合是同时为多个平台使用相同的技术开发的应用程序,但组装成单独的本机应用程序。这种开发通常建立在内部以某种方式具有本机代码的库之上。
道具:
- 大多数功能的通用代码库。对于某些功能(例如访问服务器 API),平台开发人员编写的代码几乎相同。在混合方法中,可以将此功能制作成所有平台通用的单独代码。与本机开发相比,使用此类代码所需的工时减少了两倍。
- 资源优化。通常,简单的项目的构建速度稍快一些,并且仅由一个开发人员构建。这可能是这种应用程序开发方法的主要优点。
缺点:
- 用户界面/用户体验设计。所有平台都有自己的应用程序设计指南。制定这些准则是为了使应用程序不会脱离样式,也不会惹恼用户。在跨平台中,您必须针对所有平台进行一次设计,或者为每个操作系统单独开发设计。但它需要大量资源,跨平台失去了意义。
- 用户体验。跨平台应用程序的性能、界面响应能力和操作速度比本机应用程序差得多。
- 功能性。几乎每个跨平台解决方案都有一些限制。某些技术不适用于相机、地理位置、离线操作和设备内存。存在难以实现的功能的巨大风险。然后你必须原生开发。
- 质量。跨平台方法是资源节约和最终产品质量之间的折衷。
简而言之,如果您正在开发一个相当复杂的产品,那么主要问题在于,您必须支持和扩展实际的 3 个代码库,而不是像本机那样支持 2 个代码库。功能和性能的所有限制都可以解决,但这并不容易,还需要两个开发人员。存在进入死胡同的风险,并且摆脱它比应用程序最初分别为两个平台开发的成本更高。
混合开发
目前最流行的混合解决方案是React Native和Flutter。
React Native由Facebook开发,并在其应用程序中被积极使用。Flutter是由Google内部的一个团队发明的。
- React Native 较旧,开发时间更长,但风险较小。
- Flutter 更具进步性,可以更快地构建 MVP,但由于该技术是新的,风险仍然很高。
在可预见的未来,由于快速增长的社区和谷歌的大力支持,Flutter 可能会占领移动应用开发市场的很大一部分。
这两种技术都有非常昂贵和复杂的支持和开发的风险。随着功能的增长,应用程序越来越难以保持较高的质量和性能。因此,例如,Airbnb放弃了 React Native,但不赞成 Flutter,而是支持原生代码。但在很长一段时间里,他们与 React Native 合作,为 RN 社区做出了巨大的贡献。
结论
目前,跨平台APP应用程序在性能、用户体验、界面响应能力和 UI/UX 方面远不如原生APP应用程序。另一方面,Flutter 和 React Native 甚至 PWA 等技术可以体面地节省您在简单项目上的资源。创始人只需要决定优先事项,要么是质量,要么是节省营销资源。
我们始终建议您注意您所在市场的变化和情况。在前期阶段,根据您的要求和计划,我们的团队将能够选择合适的技术堆栈,并讨论与每种技术相关的风险。决定权始终在您手中!