【问题标题】:Delphi and iOS File sizeDelphi 和 iOS 文件大小
【发布时间】:2013-07-19 01:50:44
【问题描述】:

我在 Delphi XE4 for iOS 中创建了一个小应用程序。我有7个表格。一切都很好。

但是文件大小让我有点震惊!它在模拟器上为 44MB。我为 android 制作的同一个应用程序几乎是 2MB。它有一个 320kb 的 jpg 格式的背景图像 我还没有在 iPhone 设备上测试过!

如果您在 XCode 上使用表单上的 ListBox、文本、按钮创建应用程序,那么正常大小的应用程序是什么?

有没有办法通过更改 Delphi 中的任何设置来减小文件大小?

【问题讨论】:

  • 在发布模式下针对 iOS ARM 时是否尝试过?它应该更小。众所周知,较新版本的 Delphi 会在 .Exe 中添加大量内容,包括 RTTI 和调试信息。
  • 这似乎不对。我有完整的应用程序 XE3,包含 300 多个表单、DevExpress 和其他 VCL,大小为 45MB。 IOS 应用程序应该更小!

标签: delphi firemonkey delphi-xe4 firemonkey-fm3


【解决方案1】:

大约 15 MB 听起来是 Delphi for iOS 的最小可执行文件大小(在没有调试信息的发布模式下)。如果不需要,可以尝试disable the RTTI generation。但希望不大。

它比 ObjectiveC “native” 大得多,但它嵌入了整个 Delphi RTL 和 FireMonkey 库来完成所有渲染,因此它更大。

使用原生 iOS 控件并使用 FPC 编译的“plain Objective Pascal”可执行文件应该更小。或者当使用“Oxygene for Cocoa”编译时,它应该小得多。

但不要只看可执行文件的大小,还要考虑执行期间使用的内存和总体速度。您可能需要与嵌入 PhoneGap 的 HTML5 应用程序进行比较。 FireMonkey 在屏幕上的渲染速度可能会慢一些,但使用 ARC 内存处理的原生代码应该比 JavaScript 更强大。

不要忘记您的智能手机现在拥有大量内存。 ;)

遗憾的是,在 iOS 下无法与外部库 (.so) 共享一些代码,因此您将无法使用 Delphi 包之类的东西来减小可执行文件的大小。

当然,Apple 总是竭尽全力强迫开发人员使用自己的工具和语言。 Microsoft 也是如此,尤其是 Windows 8。Delphi for iOS 并不声称比 XCode + Objective C 更好,而是跨平台,以便您可以与您的服务器或 Windows / Mac OSX 应用程序共享尽可能多的代码:您不能在 Mac 世界之外使用您的 Objective C 代码......但是您可以在平台之间共享您的 Delphi 代码,即使必须为手机重写 UI。这就是为什么与 JavaScript/PhoneGap, MonoDroid/MonoTouchAppCelerator 进行比较更公平的原因。

一些数据,取自 StackOverflow

一个问题:据我所知,AppStore 中 3G 下载的大小限制约为 20 MB。

【讨论】:

  • 如果通过应用商店无线下载交付,尺寸非常重要
  • @DavidHeffernan 但是,如果您希望每个人都可以下载您的应用程序,那么 XCode/ObjectiveC 中的专用版本是值得的。如果您希望您的应用程序成为专有系统的一部分,Delphi for iOS 将通过重用代码和知识来帮助您降低成本。我的意思是,我们不必错过目标。
  • 我发现了一个用 Delphi 制作的应用程序,它只有 11MB。当我创建普通应用程序时,上面什么都没有,只有 1 个表单,我有 35mb。下周我将购买 Apple Developer Account 并生成 IPA 文件。也许在构建 IPA 文件大小时会减小...
  • 尺寸非常重要。不仅是初始下载,而且每次更新都会下载整个应用程序。 15 MB 在移动世界中并不小。此外,即使手机确实有更多的 RAM 和存储空间,15​​ MB 也不是那么无辜。我可以找到一些警告内存的文章。
  • 我刚刚发现how to create small apps for iPhone and Android using FPC with native UI components。对于 Android,它只创建 140 KB 的 .APK 文件!
【解决方案2】:

添加到 Arnaud 的答案:

您可以使用原生控件而不是 Firemonkey 控件。
Babak Yaghoobi 编写了一个库,让 Delphi 使用操作系统的原生控件。

在此处查看 iOS:http://sourceforge.net/projects/dpfdelphiios/files/?source=navbar
Android 版:http://sourceforge.net/projects/dpfdelphiandroid/

Firemonkey 使用 100% Delphi 代码进行渲染,本机控件使用手机 ROM 中的内部代码。

【讨论】:

  • 您仍然需要嵌入 FireMonkey 库的其余部分,但对于非本机控件(即 TForm)。如果您要达到这些要求,那就放弃 Delphi,如果它让您感到困扰,那就完全原生化。大小很重要,但见鬼,Facebook 应用程序是 70 多 mb。
  • @SteveChilds 如果一个类没有被使用,它的代码会被从可执行文件中剥离出来,因为删除了死代码。所以你的评论是不正确的。
【解决方案3】:

我们有一个带有 6 个表单和许多控件的 iOS 应用程序。发布的 ipa 时钟刚刚超过 11 mb,其中包括所有需要的应用程序图标(总共 28 个,大小略高于 1 mb)。

在我看来,这并没有那么大,所以我认为这里没有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 2023-03-31
    相关资源
    最近更新 更多