Delphi和iOS 文件大小

6
我使用Delphi XE4为iOS创建了一个小应用程序,其中包含7个表单。一切都很好,但是文件大小让我有些震惊!模拟器上的大小为44MB,而我为Android制作的同一应用程序大小几乎只有2MB。它有一个320kb的jpg格式背景图像。我还没有在iPhone设备上测试过!
如果你在XCode上创建带有ListBox、文本和按钮的表单,正常的应用程序大小是多少?
是否有办法通过更改Delphi中的任何设置来减小文件大小?

你尝试过在发布模式下针对iOS ARM进行吗?它应该会更小。较新版本的Delphi已知会向.exe文件中添加大量内容,包括RTTI和调试信息。 - Arnaud Bouchez
这似乎不太对。我有一个包含超过300个表单、DevExpress和其他VCL的完整的XE3应用程序,大小为45MB。iOS应用程序应该更小! - ZibNimer
3个回答

17
大约15 MB似乎是Delphi for iOS的最小可执行文件大小(在Release模式下没有调试信息)。如果您不需要它,可以尝试禁用RTTI生成。但是希望不要太高。
它比ObjectiveC“本地”要大得多,但它嵌入了整个Delphi RTL和FireMonkey库来进行所有渲染,因此它更大。
使用原生iOS控件编译的"纯粹的Objective Pascal"可执行文件,使用FPC编译应该会更小。或者当使用"Oxygene for Cocoa"编译时,它应该会更小。
但不要只看可执行文件大小,考虑执行期间使用的内存和一般速度。您可能需要与使用PhoneGap嵌入的HTML5应用进行比较。FireMonkey在屏幕渲染方面可能会更慢,但具有ARC内存处理的本机代码应该比JavaScript更强大。
不要忘记您的智能手机现在有很多内存。 ;)
很遗憾,在iOS下无法与外部库(.so)共享代码,因此您将无法使用类似Delphi包的东西来减小可执行文件的大小。
当然,苹果一直尽其所能地强制开发人员使用自己的工具和语言。微软也是如此,特别是对于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。


如果通过应用商店进行空中下载交付,则大小确实非常重要。 - David Heffernan
@DavidHeffernan 但是如果你希望你的应用程序被所有人下载,那么在XCode/ObjectiveC中创建一个专门的版本是值得的。如果你希望你的应用程序成为专有系统的一部分,Delphi for iOS将帮助你通过重复使用代码和知识来降低成本。我的意思是,我们不必错过目标。 - Arnaud Bouchez
我发现了一个用Delphi制作的应用程序,只有11MB大小。 当我创建一个空白应用程序,什么都没有,只有1个表单时,它的大小为35MB。 下周我将购买Apple开发者帐户并生成IPA文件。也许在构建IPA文件时,文件大小会减小... - Barlet
大小非常重要。不仅是初始下载,每次更新都会下载整个应用程序。在移动世界中,15 MB并不小。即使手机具有更多的RAM和存储空间,15 MB也不是那么无害。我可以找到一些警告内存的文章。 - Runner
1
我刚刚发现了如何使用FPC和本地UI组件为iPhone和Android创建小型应用程序的方法。对于Android,它仅创建140 KB的.APK文件!(参考链接:http://blog.synopse.info/post/2013/09/19/FreePascal-Lazarus-and-Android-Native-Controls) - Arnaud Bouchez
@A. Bouchez,不错。我会看一下的。 - Runner

0

我们有一个iOS应用程序,包含6个表单和许多控件。发布的ipa文件大小略大于11 mb,其中包括所有必需的应用程序图标(共28个,总计略大于1 mb)。

我认为这并不算太大,所以我认为这里没有问题。


0

你仍然需要嵌入其余的FireMonkey库,以便使用非本地控件(例如TForm)。如果你要这么做,那就干脆放弃Delphi,完全采用本地方式,如果这让你很烦恼的话。尺寸很重要,但是Facebook应用程序大小约为70MB。 - Steve Childs
@SteveChilds 如果一个类没有被使用,它的代码会被从可执行文件中剥离,因为存在死代码移除。所以你的评论是不正确的。 - Johan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接