你的位置: 首页 > 新闻博客 > 技术博客

使用 Delphi 进行移动应用程序开发

2025-06-15 15:05:16

今天的主题是如何以最方便、最省时的方式构建 Delphi 移动应用程序。本文适用于已经使用 Delphi 进行桌面开发,并且刚刚听说或认为他们必须改进他们的软件并添加例如移动(手机和平板电脑)支持的人。让我们开始吧。

在本文中,我们将讨论以下问题:

  • 今天的 Delphi 是什么?
  • 继续使用它的原因
  • 为什么我们必须考虑转向移动平台?
  • 移动应用程序开发(在线、跨平台、混合、渐进式 Web 应用程序)
  • Delphi 移动开发的优势
  • 我们可以选择两个开发选项:FireMonkey 跨平台框架和 TMS WEB 核心框架。
  • 可用于构建 Delphi 移动应用程序的有用资源

首先,简单介绍一下我们公司。我们专注于传统软件现代化以及企业级应用程序和软件开发。对于 Delphi,我们执行从所有旧版本到最新版本或某些其他技术的迁移。此外,我们从头开始开发应用程序,执行软件的增强和重新设计,正如我所说,我们是 Delphi 开发的专家。在 Softacom,我们帮助企业完成数字化转型,对旧软件进行现代化改造并开发新软件。

mobile2-1024x575.jpeg


我想用一些历史来刷新我们的思想。如果您已经参加过我们的网络研讨会,那么您已经看过一些幻灯片。这就是针对新人的全部内容。无论如何,让我们回顾一下 Delphi 的过去和现在。

Delphi 是一种软件开发工具,用于构建当今的桌面、移动和不同的 IOT 软件。尽管它是在 1995 年开发的,但它是最新的。这样做的原因是 Embarcadero 会定期更新它,至少,根据我的信息,我们每年都会发布几次版本,并且 Embarcadero 会保持最新状态。它一直以来都是如此,它仍然是一个由经验丰富的工程师和开发人员组成的庞大社区。

这是 90 年代和 2000 年代快速应用程序开发的革命性技术。与这个丑陋的 Microsoft Visual Studio 6 版本相比,这是一个非常独特的工具,您可以将其用于桌面开发。当时,与 Delphi 相比,使用 Visual Studio 6 开始开发太难了,在 Delphi 中,你只需创建项目,放置控件然后运行即可。并观察奇迹是如何开始发生的。

一个有趣的事实是,Delphi 背后的首席架构师是 Anders Hejlsberg,他后来被说服转到 Microsoft,在那里他担任 C# 的首席架构师。我在这里提供了这些信息,就像深思熟虑一样。在那之后的 2003 年,Microsoft 引入了 .NET/C# 和 Visual Studio 2003,在我看来,它们是 Microsoft 版本的 RAD Studio。他们在广告和营销这些工具上花费了大量资金,并且该语言的受欢迎程度开始下降,最终,.NET 占据了主导地位。

mobile4-1024x575.jpeg


选择 Delphi 应用程序开发的原因

我们将这个问题分为两部分:优点和缺点。首先,我们需要谈谈利弊,因为如果我们想保持客观,当然,我们有利有弊。

优点

  • Delphi 是一个跨平台工具。今天,您真的可以开发适用于 iOS 和 Android 的应用程序。我说 Windows 不是因为它就像必备品;您可以开发适用于 macOS 或 Linux 的应用程序。
  • 它易于使用,专为桌面开发的快速开发方法而设计。根据我的经验,与 WPF 相比,使用 Delphi 进行软件开发确实更容易、更快捷,WPF 当然具有比 WinForms 更丰富的 UI。但是,另一方面,开发 WPF UI 应用程序确实要困难得多。但是如果我们谈论的是 WinForms,我什至无法将其与 Delphi 进行比较,因为 WinForms 在 UI 和可能性方面非常薄弱,改进 WinForms 应用程序的 UI 并不容易。
  • 得益于 Delphi 应用程序开发,您可以获得易于部署的产品,因为可执行文件不需要任何预装的框架,因此无需为框架版本控制、包版本控制等而烦恼。这就是我的意思。例如,如果你有一些 .NET 应用程序,你应该知道你的客户拥有哪个 .NET 版本,他们拥有哪些包,它将如何,他们是否有任何冲突,并且你必须部署程序集,并且有很多问题。
  • 即使在今天,Delphi 也有大量的第三方组件,例如,看看 TMS 软件集。这是一组非常庞大的组件,可以涵盖 UI、后台作或显示媒体、不同的跨平台控件、Web 控件等。
  • 当然,另一个优势是 Embarcadero 的 Delphi 和 RAD Studio 的定期新版本。
  • 作为专业人士,我们有很多使用 Delphi 开发的软件。现在,你真的可以使用 Delphi 5 和 7 等工具将遗留软件迁移到最新的 Delphi 版本,而无需从头开始重写。如果您的软件有很多后台逻辑,您可以保留 90-95% 的代码。当然,就像一句话一样,前提是你不需要代码审查和重写你的代码并重写意大利面条。

  • mobile5-1024x576.png

缺点

在我看来,两个主要缺点是未来风险和负面信息噪音。

  • 未来风险:这是我从我们的客户和合作伙伴那里听到的:Embarcadero 是否有足够的资源与其他开发工具竞争?我们市场上是否有足够的专家和开发人员来支持和开发我们的软件?这些问题真的很重要。现在,我们甚至在为 Delphi 而战,试图像传道者一样,向人们解释为什么他们不需要害怕。
  • 负面信息噪音:在 90 年代和 2000 年代,Delphi 在大学中进行了研究,现在它已被其他工具所取代。我记得去年,Embarcadero 推出了免费版本的 Delphi(社区版),现在也许不同的大学会再次继续使用 Delphi,年轻人会在课堂上学习它。同样,今天,年轻的开发人员认为它是过时的,而不是时尚的技术。他们没有任何事实。这就是他们刚刚听到的,这就是我所说的负面信息噪音。Delphi 不是作系统所有者。所以这是不言自明的,为什么它总是比 Microsoft、Apple 或 Google 后退半步。当 Microsoft 已经开发了一些东西并在他们的开发工具中实现时,Embarcadero 需要时间在其 Delphi 中添加对这些新功能的支持。这就是生活。
  • 同样,从我的角度来看,Delphi 不适合 Web 开发。我说的是用 Delphi Web 应用程序框架来理解。如果与 Visual Studio 和 ASP.NET、Apache 和 PHP 等原生 Web 技术相比,您没有 Delphi 的原生技术。
  • 开发复杂的移动应用程序非常耗时。实现 FireMonkey 默认不支持的 Facebook、Google 或 Apple 的任何自定义 SDK 并不容易。这是一个非常严重的缺点。有时,如果你使用原生工具进行 Android 开发,比如 Android Studio,从 Faceboo 实现新版本的 SDK,你可能需要几个小时,但对于 Delphi,不幸的是,如果你没有经验,可能需要两天、一周,依此类推。

mobile6-1024x574.jpeg


为什么我们必须考虑转向移动平台?

我认为这是一个非常明确的问题:为什么我们今天必须考虑移动平台?在这里,我只是提供了一些数字。当然,衡量人们在用什么,用什么开发工具太难了,我根据 Web 上的流量来计算我的数字。因为对,不,网络就是一切。客户端产生流量,基于此,我只是衡量人们正在使用哪些工具。您可以看到,在 2010 年,95% 是桌面流量。2015 年,这一比例下降到近 60%。如果我们谈论的是 2019 年,那么移动流量最终获胜。此信息适用于 4 月。人们习惯了移动应用程序,他们喜欢它们。这就是这些数字如此之高的原因。以下是基于 StatCounter 服务的确切数字。


mobile7-1024x576.jpeg


移动应用程序开发(本机、跨平台、混合、渐进式 Web 应用程序)

现在让我们讨论一下如何开发一般的移动应用程序。但我们可以说,当您考虑 Delphi 移动应用程序开发时,也应该考虑这些方法。在 Softacom,我们拥有几乎所有这些技术的经验,并且我们使用所有这些技术、技巧、框架和工具开发了商业应用程序。同样,我们将讨论利弊。我将移动应用程序的所有类型的开发工具分为三个部分:本机、跨平台(混合)和基于 Web 的。而且没有标准可以告诉你这个工具到底属于这种类型。现在它有点模糊,一个工具可以属于两种不同的类型。

本机开发

让我们从原生开发的优点开始。我将讨论 XCode 和 Android Studio。适用于 iOS 的 Xcode 可以是 Objective-C 或 Swift 以及 Android Studio,如 JavaScript、适用于 Android 的 Kotlin。

  • 主要优点是它具有最好的速度和性能。他们正在努力开发最接近平台、设备和作系统的工具。
  • 对最新功能和最新文档的永久支持。所有其他工具,如 cross-platform 和 hybrid,都应该再次在其工具中实现所有这些新功能。
  • 发布到应用商店 – 人们的典型分发方式。跨平台应用程序也在商店中发布。
  • 但在这里,您受到了 100% 的保护,并且在发布到应用商店期间的风险较低。
  • 所有供应商提供的 SDK。如果我们有任何源硬件、第三方服务或 SDK,那么所有这些供应商首先都会为原生平台开发 SDK:用于 Xcode 和 Android Studio,这是一个非常好的好处。

  • mobile8-1024x574.jpeg

跨平台应用程序开发方法

  • 所有这些跨平台工具的理念是针对不同平台的可重用源代码。是的,从理论上讲,您可以只编写一次代码并在不同的平台上使用它。当然,在现实生活中,这并不那么容易。因为不同的平台同样具有不同的技术,您必须在代码中实现不同的细微差别。至于 UI,有时它可以是一个通用的 UI,但有时您必须为每个平台创建表单、控件和不同的版本。
  • 发布到应用商店。跨平台工具为应用商店创建本机包:用于 Apple App Store 和 Google Play Store。
  • 可以使用与桌面相同的知识。因为有时候,如果我们谈论的是 Delphi,我们可以为桌面开发一个应用程序,然后使用 FireMonkey 将其导入到移动设备上。
  • 对于不太复杂的应用程序,开发速度更快。同样,由于可重用的代码,可重用的 UI。
  • 在为 iOS 和 Android 平台开发应用程序时,与原生平台相比,它可以便宜 30-40%,即使您有不同的 UI,并且有时需要时间来实施所有必要的 SDK。

基于 Web 的应用程序开发方法

这是当今非常著名的技术 – PWA 或渐进式 Web 应用程序。它包括许多不同的工具和框架。JQuery、Bootstrap、React.js、Angular 等。应用程序可以在您可以使用 Web 浏览器的任何地方运行。这个应用程序真的可以在桌面、Mac OS、iOS、Android、Linux 上运行——没关系。它甚至可以在没有互联网连接的情况下工作。当您打开应用程序时,它可以将其缓存在您的设备上并使用 JavaScript,它会缓存大量逻辑和页面,即使没有互联网连接,您的应用程序也可以工作。例如,从 Web 和服务器检索数据,理论上可以在没有 Internet 连接的情况下工作,就像常规应用程序一样。您甚至会在桌面上有一个图标。可以应用您用于 Web 开发的相同知识:C#、HTTP/CSS/JavaScript。应用程序的更新过程更容易。您只能在服务器上更改一次 HTML/CSS/JavaScript 文件,所有用户都将获得此更新,并且他们不需要在 App Store 中更新应用程序。如果我们谈论的是原生应用程序,您必须控制您的用户是否更新您的应用程序,以及他们使用最新版本,而没有您修复的错误。

mobile9-1024x576.jpeg


现在缺点

今天,如果 iOS 或 Android 应用程序是商业应用程序,而不是某个特定的服务应用程序,那么仅仅拥有该应用程序是不够的。如果这是一个适合所有人的应用程序,比如电子商务,您应该同时拥有两个平台,至少两个平台都拥有它:iOS 和 Android。它将是针对不同平台的不同工具,而不是可重用的源代码。您将需要不同的资源和不同的专家。当然,也许你有一个了解 Android 和 iOS 的人,他可以使用两个不同的平台,但无论如何,你必须成倍地增加他的时间来开发你的应用程序的两个版本。它不适合一个人。

如果我们谈论的是跨平台,那么它可以是一个可以在所有平台上开发您的应用程序的人。如果我们谈论跨平台,通常不是 100% 的平台支持。这就是我谈到的。例如,Delphi 应用程序开发。我不确定现在的情况如何,但例如,以前,Delphi 不支持某些东西。

对于跨平台 SDK,可用性比原生工具差——例如,如果您需要最新的 Firebase 和 Facebook SDK 支持,则必须等待或自己开发。我记得,Embarcadero 可能在几天前发布了 Firebase 对 Delphi 的支持,这很好,但这只是一个例子。在现实生活中,您有成百上千个不同的 SDK 用于不同的第三方提供商,用于不同系统的集成,等等。

如果我们谈论基于 Web,您需要 Web 托管。您必须存储 Web 应用程序或 PWA 应用程序。它可以是网络托管或虚拟机,这要贵得多,而且可能会有很多麻烦。对通过应用商店进行分发的支持有限。我认为这非常重要,因为对于人们来说,这是一种典型的方式:去 App Store 下载应用程序。它不像 “你应该去我的网站,检查这个链接,打开一些东西,应用程序就会被安装”。有时这是一个缺点。但有时您无法根据应用商店的策略部署您的移动应用程序。例如,应用商店禁止某些行业。他们可以开发一个可移植的 Web 应用程序并通过您的网站进行部署,并使用另一种架构。在这种情况下,这将是一个优势。

Delphi 移动开发的优势

mobile10-1024x574.jpeg


现在让我们谈谈您可以在 Delphi 开发中享受的机会。它可以是不同的变体或不同的选项。在这里,我只提供了我们使用的最受欢迎的应用程序。我们在这种认识方面有很多经验。

  • 第一个是经典的 – FireMonkey Native。它用于跨平台应用程序开发,是一个 Embarcadero 解决方案。
  • 下一个是 Web 应用程序(托管在主机上的某个位置)加上 FireMonkey Web 浏览器容器。最后,对于应用商店,它看起来就像一个原生应用程序。您不会使用 Web 浏览器打开它。它将成为将安装在您的手机上的编译应用程序,并且它将像常规的本机应用程序一样工作。
  • 我们今天将讨论的第三个选项是 TMS Web Core PWA 项目。

你可以看到所有这些圆圈,它们都在这里提供。它就像一个示例,说明了它是如何工作的,以及实施这些技术需要哪些资源。如果我们谈论的是 FireMonkey,我们将开发一个 iOS 和 Android 应用程序,那么对于 iOS,您将需要 Mac OS、已安装的 Xcode 和 Embarcadero(平台助理服务器)的 PAServer。

Delphi 移动应用程序项目将连接到 MAC,在 Mac OS 上编译您的应用程序和项目。您最终将拥有一个 .apk 包。它就像一个 iOS 应用程序文件,你可以使用 iTunes Connect(来自 Xcode 包的应用程序加载器)将其上传到 App Store。您将需要一台装有 Mac OS 的物理计算机或一台虚拟机。

对于 Java 和 Android,这要容易一些。在与 Delphi 相同的机器上,您只需使用 Java 编译您的应用程序,在输出文件夹中,您将有一个 APK 包,您可以通过浏览器将其上传到 Google Play 市场。如果我们谈论 Web 应用程序加上 FireMonkey,它的过程几乎相同。但您还需要托管您的 Web 应用程序。它可以是共享托管,也可以是基于云的托管(如 Azure),并且您的 Web 应用程序可以内置于您想要的任何技术中。它可以是 ASP.NET 或 PHP。

您的 Web 应用程序和 Delphi 之间的通信可以通过 JavaScript 进行。Delphi 为此目的提供了不同的技术。第三个选项是 TMS Web Core PWA 项目。在 Delphi 中,您将创建一个特定的项目,称为 TMS Web Core 项目。它不像一个普通的 VCL FireMonkey 项目; 它是一个 TMS Web Core 项目,在 Delphi 计算机上,您将能够设计并编译您的应用程序。在输出文件夹中,您将拥有您的网站和支持 PWA 技术的特定文件,并且您需要 Azure 虚拟机或任何本地服务器等托管。这类似于 TMS Web Core PWA 的工作原理。

当您想构建移动应用程序时,我们可以选择两个选项:FireMonkey 跨平台框架和 TMS WEB 核心框架。

mobile11-1024x574.jpeg


FireMonkey 跨平台框架

现在我们将更深入地讨论这个 FireMonkey 是如何工作的。我听到了很多问题:“跨平台应用程序如何是本机的?是的,它真的可以。因为 FireMonkey 架构及其工作原理。Delphi 将 FireMonkey 项目编译为适用于 iOS 和 Android 的原生包(.ipa 和 .apk),这些包将通过 iTunes Connect 和 Google Play Market 部署到 App Store。Embarcadero 将这样的解决方案称为具有单一代码库的原生应用程序。在下一张幻灯片中,我将展示它是如何使用 iOS 工作的。Apple 和 Android 这两个平台都接受像原生应用程序一样的包,我认为它们甚至不知道它们是不是使用 Xcode 和 Android Studio 编译的。您不需要任何其他 Web 应用程序、仿真器或虚拟机来运行应用程序。Delphi 使用 XCode 和 Java 编译器创建真正的原生移动应用程序。这就是我已经提到的关于 Delphi iOS 开发和 Delphi Android 开发的内容。

让我们谈谈作为 FireMonkey 开发人员可以利用的优点,以及何时这种方法是正确的。你可以使用 Object Pascal 代码和 Delphi IDE 来开发 iOS 和 Android 移动应用程序。在 Delphi iOS 和 Android 开发中,你可以为两个平台使用相同的源代码、相同的代码库和 UI。有时您可以使用相同的 UI,但有时可能会略有不同。但是,如果与其他工具(例如 Xamarin)相比,它们具有通用的 UI,但它们也可以创建不同的 UI。根据我的经验,这是一种更流行的方式。但是在 Delphi 移动应用程序开发中,您将为两个平台提供一个 UI。您可以将编译器指令用于特定于平台的代码。如果由于硬件不同,作系统也不同,因此存在一些平台差异,并且您可以使用编译器指令,并在同一过程中编写一段属于不同平台的代码。

mobile12-1024x575.jpeg


它是如何工作的?它在 Delphi iOS 开发中究竟是如何工作的?您可以将这些圆圈视为项目生命周期。您正在创建一个 FireMonkey Delphi 项目并添加一个 iOS 目标平台。然后,您必须将 Delphi 连接到安装了 Xcode 和 Delphi PAServer 应用程序的 Mac 机器。

建立此连接后,Delphi 在 Mac 上使用 PAServer 和 Xcode 编译项目。PAServer 只是 Embarcadero 的一个附加应用程序,有助于与 Delphi 和 macOS 通信。它就像使用 Xcode 编译应用程序的帮助程序。与结果一样,您已经在 Mac 机器上的某个文件夹中编译了 .ipa 包。之后,您可以使用 XCode Application Loader。当然,在此之前,您必须准备开发 iOS 应用程序的环境。您必须执行并完成所有证书、供应配置文件...

完成所有这些步骤后,您只需打开 Xcode Application Loader,选择之前使用 Delphi 编译的 .ipa 并上传到 iOS。如果一切正常,请添加描述并将其发送给 Apple 进行审核,几天后,您就可以将应用程序发布到 App Store。

这种方法的缺点是什么?当然,FireMonkey 没有 100% 的平台支持。这是不可能的。Embarcadero 应该在 Delphi 中涵盖很多功能,这需要做很多工作,但也许没有那么多人会使用这段代码,因为这项技术不太流行。这意味着对于某些可用的功能,例如,从 XCode 和 Android Studio 的包装盒中,您将无权访问您的应用程序。您需要学习如何编写包装器和桥接类,以访问 iOS 和 Android SDK 中缺少的类和方法。几乎所有的第三方 SDK 和 API 提供商都有适用于本机平台的库,同样,我已经说过了,但对于 Delphi 和 FireMonkey,您将拥有这样的支持更像是一个例外, 不幸。您将再次不得不编写包装器和桥接类来访问所有 SDK 方法——这是额外的工作,也是您为跨平台优势付出的代价。

mobile13-1024x576.jpeg


TMS WEB 核心框架

它是关于 FireMonkey 的,现在让我们谈谈 Web Core 技术。很多人问“真的可以使用 Delphi 创建渐进式 Web 应用程序吗?是的,真的。TMS WEB Core 使用 Object Pascal 到 JavaScript 转换器并创建一个 PWA 应用程序,您可以使用手机 Web 浏览器运行该应用程序。我的意思是你创建项目,编译它,然后,你有一个包含你网站的文件夹,你可以将其部署到 Web 托管或云中。然后,您从手机上的 Web 浏览器打开此应用程序,现代浏览器检测到它不是一个常规网站——这是一个便携式 Web 应用程序。它可以删除您的状态栏,删除您的主菜单,并让您能够在设备的主屏幕上添加图标。当然,另一个优点是 PWA 应用程序可以访问平台和设备硬件。当然,有限,不是 100%,甚至比跨平台还要糟糕。而且,正如我所说,该应用程序将有一个快捷方式,可以在没有互联网访问的情况下打开,但功能有限。它又是 PWA 技术,就像一个应用程序,它可以缓存您的文件并知道如何在没有互联网连接的情况下在设备上工作,直到您不需要从服务器刷新一些数据。

mobile14-1024x575.jpeg


它是如何工作的?您可以在您的计算机上创建一个 Delphi TMS WEB Core 项目。您编译它 – 您将拥有一个包含 HTML5、JavaScript 和 CSS 文件的文件夹。然后,将这些文件部署到 Web 服务器。然后,您可以使用手机上的 Web 浏览器打开该应用程序,该应用程序可以具有屏幕快捷方式,并且可以在没有互联网连接的情况下启动。对于第一次运行,您当然需要互联网连接。

在这种情况下,我们有哪些优点?您可以使用 Delphi IDE 来开发使用所见即所得 (WYSIWYG) 编辑器的渐进式 Web 移动应用程序。在后面的幻灯片中,我将向您展示一个示例,说明它在 IDE 设计器和真实浏览器中的外观。应用程序将缓存到设备中,并且可以脱机工作(在受限模式下)。如果 TMS WEB 核心组件列表不建议您实施某些功能,则可以使用 JavaScript、HTML 模板、CSS 样式文件,并根据需要自定义您的应用程序。TMS WEB Core 项目支持这种可能性。您可以使用 Bootstrap 和其他流行的 JavaScript 框架来开发您的应用程序。您真的不必花费大量时间来学习如何使用每个平台,因为它实际上是一个应用程序,针对不同平台具有相同的 UI。

mobile15-1024x577.jpeg


这是我准备的一个项目示例。在左侧,您可以看到表单在 IDE 设计器中的外观。当然,这与它在现实生活中的样子并不完全一样,在生产环境中,因为我在 CSS 和 HTML 中添加了不同的 UI 实现,在我运行它之后,你可以看到它在相当好的背景下看起来如何,但 UI 看起来就像在设计师中一样。你只是不能双击注册按钮,编写代码,并与服务器通信,它将被转换为 JavaScript,它再次将与一些 REST API 服务器一起使用,你将拥有一个真正的应用程序。

mobile16-1024x574.jpeg


我们有哪些缺点?我想补充一点,几乎所有的缺点都与 TMS WEB Core 产品无关。几乎所有的都是关于 PWA 限制的。第一个是向应用商店分发的问题,尤其是 Apple App Store,这是用户搜索应用程序最著名的分发渠道。要创建丰富的 UI 和用户体验应用程序,您需要良好的 JavaScript/HTML// CSS 知识。但通常,很多人开始使用 PWA 是因为他们已经在使用 HTML 和 JavaScript,并且他们了解这项技术。PWA 是一个 Web 浏览器应用程序,它不能像本机代码那样访问硬件。

mobile17-1024x575.jpeg


现在,我们来谈谈如何开始 Delph 应用程序开发。我只是建议你从这些资源开始。在 Delphi GetIt 包管理器中,您可以找到令人惊叹的项目示例。他们将向您解释如何使用不同的列表、缩放比例和 UI 实现漂亮漂亮的表单。它至少有六个样本。然后你可以去 FMX Express。这是一个包含大量 FireMonkey 示例和解决方案的网站,我真的很喜欢这个网站。对于 TMS WEB 核心,您可以在产品安装后浏览详细的开发人员指南。它非常详细,有很多评论,并解释了该技术的工作原理。当然,您可以使用 Stack Overflow 和其他热门资源。如果您对 Delphi 移动应用程序开发感兴趣,这就是我可以为您提供的建议。

可用于构建应用的有用资源

mobile18-1024x576.jpeg


感谢您的关注。再见!

QQ在线咨询
热线电话
0531-66900120
售后服务
13287796906
QQ在线咨询
热线电话
0531-66900120
售后服务
13287796906