2013-07-19 53 views
6

Tôi đã tạo một ứng dụng nhỏ trong Delphi XE4 cho iOS. Tôi có 7 mẫu đơn trên đó. Và mọi thứ đều tốt.Delphi và iOS Kích thước tệp

Nhưng tôi hơi bị sốc với kích thước tệp! 44MB của nó trên Simulator. Ứng dụng tương tự mà tôi đã tạo cho android gần như là 2MB. Nó có hình nền 320kb ở định dạng jpg Tôi chưa thử nghiệm trên thiết bị iPhone!

Ứng dụng kích thước bình thường nếu bạn tạo trên XCode với ListBox, văn bản, nút trên biểu mẫu là gì?

Có cách nào để giảm kích thước tệp bằng cách thay đổi bất kỳ cài đặt nào trong Delphi không?

+0

Bạn đã thử nhắm mục tiêu đến iOS ARM ở chế độ phát hành chưa? Nó phải nhỏ hơn. Các phiên bản mới hơn của Delphi được biết là thêm nhiều nội dung vào .Exe, bao gồm RTTI và thông tin gỡ lỗi. –

+0

Điều này có vẻ không đúng. Tôi có đầy đủ ứng dụng XE3 với hơn 300 hình thức, DevExpress và VCL khác và kích thước là 45MB. Ứng dụng iOS phải nhỏ hơn! – ZibNimer

Trả lời

17

Khoảng 15 MB âm thanh là kích thước thực thi nhỏ nhất với Delphi dành cho iOS (ở chế độ Phát hành không có thông tin gỡ lỗi). Bạn có thể thử disable the RTTI generation, nếu bạn không cần đến nó. Nhưng không phải với rất nhiều hy vọng.

Nó lớn hơn nhiều so với ObjectiveC "gốc", nhưng nó nhúng toàn bộ thư viện Delphi RTL và FireMonkey để thực hiện tất cả hiển thị, do đó nó lớn hơn.

Một "plain Objective Pascal" thực thi bằng các điều khiển iOS gốc, được biên dịch bằng FPC, phải nhỏ hơn. Hoặc khi được biên dịch với "Oxygene for Cocoa", nó sẽ nhỏ hơn nhiều.

Nhưng không chỉ nhìn ở kích thước thực thi, hãy nghĩ đến bộ nhớ được sử dụng trong quá trình thực hiện và tốc độ chung. Bạn có thể phải so sánh với các ứng dụng HTML5 được nhúng với PhoneGap. FireMonkey có thể chậm hơn khi hiển thị trên màn hình, nhưng mã gốc với xử lý bộ nhớ ARC phải mạnh hơn JavaScript.

Đừng quên rằng điện thoại thông minh của bạn hiện có rất nhiều bộ nhớ. ;)

Rất tiếc, không thể chia sẻ một số mã với thư viện bên ngoài (.so) trong iOS, vì vậy bạn sẽ không thể sử dụng các gói như Delphi để giảm kích thước thực thi.

Tất nhiên, Apple luôn thực hiện mọi thứ nhằm buộc các nhà phát triển sử dụng các công cụ và ngôn ngữ của riêng mình. Cũng như Microsoft, đặc biệt là cho Windows 8. Delphi for iOS không yêu cầu tốt hơn XCode + Objective C, nhưng là nền tảng chéo để bạn có thể chia sẻ càng nhiều mã càng tốt với máy chủ của bạn hoặc ứng dụng Windows/Mac OSX: bạn không thể sử dụng mã Objective C của bạn bên ngoài thế giới Mac ... nhưng bạn có thể chia sẻ mã Delphi của bạn giữa các nền tảng, ngay cả khi giao diện người dùng phải được viết lại cho điện thoại di động. Đây là lý do tại sao so sánh công bằng hơn sẽ là với JavaScript/PhoneGap,MonoDroid/MonoTouch hoặc AppCelerator.

Một số dữ liệu, lấy ra từ StackOverflow:

Một mối quan tâm: AFAIK giới hạn kích thước để tải xuống 3G trong AppStore là khoảng 20 MB.

+0

Kích thước thực sự quan trọng nếu giao hàng qua cửa hàng ứng dụng qua tải xuống không dây –

+0

@DavidHeffernan Nhưng nếu bạn muốn ứng dụng của mình được mọi người tải xuống, phiên bản chuyên dụng trong XCode/ObjectiveC rất đáng giá. Nếu bạn muốn ứng dụng của bạn là một phần của một hệ thống độc quyền, Delphi for iOS sẽ giúp bạn giảm chi phí bằng cách sử dụng lại mã và kiến ​​thức. Ý tôi là, chúng ta không phải bỏ lỡ mục tiêu. –

+0

Tôi tìm thấy một ứng dụng được thực hiện trong Delphi và chỉ 11MB của nó. Khi tôi tạo ứng dụng đơn giản không có gì trên đó và chỉ có 1 biểu mẫu tôi có 35mb. Tuần tới tôi sẽ mua Tài khoản nhà phát triển Apple và sẽ tạo tệp IPA. Có thể khi xây dựng kích thước tệp IPA giảm ... – Barlet

0

Để thêm vào câu trả lời của Arnaud:

Bạn có thể sử dụng Kiểm soát gốc thay vì các nút điều khiển Firemonkey.
Babak Yaghoobi đã viết thư viện để cho phép Delphi sử dụng các điều khiển gốc của hệ điều hành.

Xem ở đây dành cho iOS: http://sourceforge.net/projects/dpfdelphiios/files/?source=navbar
Và đây dành cho Android: http://sourceforge.net/projects/dpfdelphiandroid/

Firemonkey ám sử dụng 100% mã Delphi, các điều khiển có nguồn gốc sử dụng mã nội bộ trong ROM của điện thoại.

+0

YOu vẫn cần nhúng phần còn lại của thư viện FireMonkey cho các điều khiển không phải là bản địa (tức là TForm). Nếu bạn đang đi đến những độ dài, chỉ cần mương Delphi và đi hoàn toàn bản địa nếu nó làm phiền bạn nhiều. Kích thước là quan trọng, nhưng heck, Ứng dụng Facebook là 70 lẻ mb. –

+0

@SteveChilds Nếu một lớp không được sử dụng, mã của nó sẽ bị loại bỏ khỏi tệp thực thi, do việc loại bỏ mã chết. Vì vậy, bình luận của bạn là không chính xác. – Johan

0

Chúng tôi có ứng dụng iOS có 6 biểu mẫu và nhiều điều khiển. Đồng hồ ipa phát hành chỉ trong hơn 11 mb và bao gồm tất cả các biểu tượng ứng dụng cần thiết (28 tổng số đo một ít hơn 1 mb).

Theo ý kiến ​​của tôi, điều đó không lớn đến mức tôi không thấy vấn đề ở đây.