2013-07-19 78 views
6

我在Delphi XE4 for iOS中創建了一個小應用程序。我有7種形式。一切都很好。Delphi和iOS文件大小

但我有點震驚的文件大小!它在模擬器上有44MB。我爲android製作的應用程序差不多是2MB。它有一個320kb的jpg格式的背景圖片 我沒有在iPhone設備上測試它!

如果您在XCode上使用ListBox,文本,按鈕在窗體上創建,那麼正常大小的應用程序是什麼?

有沒有辦法通過更改Delphi中的任何設置來減少文件大小?

+0

您是否嘗試在發佈模式下定位iOS ARM?它應該更小。已知更新版本的Delphi向.Exe添加大量內容,包括RTTI和調試信息。 –

+0

這看起來不對。我有完整的應用程序XE3超過300個窗體,DevExpress和其他VCL和大小爲45MB。 IOS應用程序應該更小! – ZibNimer

回答

17

大約15 MB聽起來是Delphi for iOS最小的可執行文件大小(在Release模式下沒有調試信息)。如果你不需要它,你可以嘗試disable the RTTI generation。但沒有很多希望。

它比ObjectiveC「native」大得多,但它嵌入了整個Delphi RTL和FireMonkey庫來完成所有渲染,因此它更大。

用FPC編譯的使用本地iOS控件的「plain Objective Pascal」可執行文件應該更小。或者編輯時使用「Oxygene for Cocoa」,它應該小得多。

但是不要只看可執行文件的大小,考慮執行過程中使用的內存和一般速度。您可能必須與嵌入PhoneGap的HTML5應用程序進行比較。 FireMonkey在屏幕上渲染速度可能較慢,但使用ARC內存處理的本機代碼應該比JavaScript更強大。

不要忘記你的智能手機現在有很多內存。 ;)

不幸的是,在iOS下無法與外部庫(.so)共享一些代碼,所以你將無法使用類似Delphi包的東西來減少可執行文件的大小。

當然,Apple一直在竭盡全力,迫使開發者使用自己的工具和語言。與微軟一樣,尤其是Windows 8,Delphi for iOS並沒有聲稱比XCode + Objective C更好,但是爲了跨平臺,您可以儘可能多地與您的服務器或Windows/Mac OSX應用程序共享代碼:不能在Mac世界之外使用你的Objective C代碼......但是你可以在平臺之間共享你的Delphi代碼,即使UI需要重寫手機。這就是爲什麼與JavaScript/PhoneGap,MonoDroid/MonoTouchAppCelerator更公平的比較。

一些數據,從StackOverflow的檢索到:

一個問題:AFAIK AppStore中3G下載的大小限制約爲20 MB。

+0

如果通過應用程序商店通過空中下載發送大小是非常重要的 –

+0

@DavidHeffernan但是如果您希望您的應用程序能夠被所有人下載,XCode/ObjectiveC中的專用版本是值得的。如果您希望您的應用程序成爲專有系統的一部分,Delphi for iOS將幫助您通過重複使用代碼和知識來降低成本。我的意思是,我們不必錯過目標。 –

+0

我發現一個在Delphi中製作的應用程序,它只有11MB。 當我創建簡單的應用程序沒有什麼,只有1個表格我有35MB。 下週我會購買Apple開發者賬戶並且會生成IPA文件。也許當建設IPA文件大小減少... – Barlet

0

爲了增加阿爾諾的回答是:

您可以使用,而不是Firemonkey那些本地控件。
Babak Yaghoobi已經編寫了一個庫讓Delphi使用操作系統的本地控件。

在這裏看到的iOS:http://sourceforge.net/projects/dpfdelphiios/files/?source=navbar
這裏爲Android:http://sourceforge.net/projects/dpfdelphiandroid/

Firemonkey渲染使用100%Delphi代碼,原生控制在手機中使用的ROM的內部代碼。

+0

對於非本地控件(即TForm),你仍然需要嵌入其餘的FireMonkey庫。如果你想達到這樣的長度,只要把德爾菲丟掉,如果它讓你感到困擾的話,那麼它就會完全原生。 大小很重要,但是,Facebook應用程序是70 MB。 –

+0

@SteveChilds如果沒有使用類,則由於刪除了死代碼,其代碼將從可執行文件中刪除。所以你的評論是不正確的。 – Johan

0

我們有一個具有6種形式和許多控件的iOS應用程序。 ipa的發佈時鐘剛剛超過11 MB,幷包含所有必需的應用程序圖標(總計28個,超過1 MB)。

在我看來,這並不是那麼大,所以我在這裏沒有看到問題。