# Native Code > برنامه نویسی در Delphi > برنامه نویسی موبایل در Delphi >  حجم زیاد فایل خروجی دلفی

## arman.m.80

من تو دلفی xe5 یک برنامه 8 فرمی نسبتا ساده نوشتم که کار اصلی برنامه فرستادن و گرفتن اس ام اس به یک دستگاه خاص هستش. از این 8 فرم فقط 4 تا از آنها کار فرستادن و گرفتنو انجام میدن با این حال حجم برنامم شده 17.3MB !!!!!! :ناراحت: 
چرا اندازه فایل خروجی دلفی این قدر سنگینه ولی مثلا ایکلیپس و یا اندروید استدیو این قدر حجم فایلای خروجیش کمه؟
آیا راهی برای کم کردن حجم فایل خروجی در دلفی وجود داد؟ :متفکر:

----------


## BORHAN TEC

پروژه رو در حالت Release کامپایل کنید. با این کار حجم کم میشه ولی هر کاری کنید حجم فایل کمتر از فایلهای تولید شده با جاوا نخواهد بود.

----------


## jst

1-با استفاده از نرم افزار های پکر نظیر upx که  رایگان هم هست می تونید حجم فایل رو خیلی کم کنید . 
2- در تنظیمات پروژه می تونید بعضی از پکیجهایی رو که به نیاز ندارید حذف کنید.

----------


## arman.m.80

من مود debug رو به release تبدیل کردم ولی فقط 1.3MB فرق کرد و برنامم شد 16MB و باز هم خیلی زیاده.   :ناراحت: 
دیگه چیکار میشه کرد ؟

----------


## jst

برو اینجا یه سر بزن , حالشو ببر 
http://upx.sourceforge.net/

----------


## arman.m.80

من اونو برای ویندوز32بیتی دانلود کردم ولی کار نکرد.
چیکار کنم؟

----------


## jst

باید تو محیط cmd اجرا کنی مثلا upx project1.exe  یا تو چنجره explorer فایل اجرایی رو درگ کن روی upx

----------


## arman.m.80

این برنامه از فایل apk پشتیبانی میکنه؟
من فایل apk برناممودرگ کردم بعد سریع یه صفحه سیاه باز میشه و بعد بسته و هیچ کاری هم انجام نمیده.
چیکار کنم؟

----------


## ابوالفضل عباسی

دوست عزیز برای مشکل حجم زیاد در دلفی در ویندوز این کار رو انجام بده (فقط برای ویندوز عمل میکنه برای اندروید عمل نمی کنه)
به این قسمت برو
در لیست های بالا xe 5 :
Project-->Option-->Delphi Compiler-->Linking-->Debug Information 
این تیک اگر true هست false کن  بعد کامپایل بگیر حجم برنامه تقریبا نصف میشه
این تیک چیز مهمی نیست فقط راهنماهای دلفی درون برنامه ات میگذاره که تاثیری در برنامه ات نمی گذاره

----------


## arman.m.80

مشکل من توی اندرویده نه تو ویندوز حجم فایل apk برنامه ای که با دلفی مینویسم  خیلی زیاده نمیدونم چیکار کنم؟
چنتا راه امتحان کردم ولی فقط 2MB فرق کرد .
دوستان لطفاراهنمایی کنید.
دیگه چه راهکاری وجود داره؟ :متفکر:

----------


## ابوالفضل عباسی

حالا شما با این روش کامپایل اندروید بگیرید من تست نکردم شاید حجمش کم بشه 
حالا شما تست کنید

----------


## developing

با سلام

زمانی که در دلفی حتی یک فرم خالی را برای اندروید خروجی می  گیرید یعنی APK تولید می نمایید. معمولا اندازه ای بیش از 6 مگابایت دارد.  این جزء ذات دلفی است.
به خاطر اینکه شما یک خروجی سطح پایین (مستقل از  ماشین مجازی دالویک) می گیرید که این باعث می شود برنامه های شما سرعت  قابل قبولی داشته باشند. و در واقع فایرمانکی از OpenGL SE برای رسم  کامپوننت های خود استفاده می کند که همین باعث شده است فایل خروجی حجم  زیادی داشته باشد.

راه حل: اگر می خواهید برنامه هایی کمتر از 5 مگابایت در دلفی برای اندروید ایجاد نمایید، شما هیچ راه چاره ای ندارید. :شیطان: 

پیشنهاد:  برای اینکه بتوانید برنامه های با حجم پایین بنویسید یا باید خودتان از  ترسیم به وسیله ی OpenGL SE آگاهی داشته باشید و بتوانید از این روش  استفاده نمایید که در دلفی بعید می دانم این امکان در اختیار شما قرار داده  شود.

و یا اینکه از زبان های دیگر و یا کامپایلرهای دیگر استفاده نمایید.

اگر به زبان پاسکال علاقه مند هستید پیشنهاد من استفاده از لازاروس است. :لبخند گشاده!: 

برای مثال در لازاروس می توانید فایل هایی به سبکی خود جاوا برای اندروید تولید نمایید.

در لازاروس 2 راه وجود دارد:

1-  از چندساختی (Cross Build) لازاروس استفاده نمایید که در اینصورت شما حتی  می توانید برنامه های کنسولی در اندروید داشته باشید و با استفاده از توابع  سطح پایین حتی بازیهای سریع و جذابی ایجاد نمایید.
2- از واسط و مبدل Simonsayz's  که در واقع، برنامه ی نوشته شده ی شما را به زبان جاوا تبدیل می نماید استفاده نمایید.

در حالت 1 برنامه ی شما با 8 فرم کمتر از 800کیلوبایت و در حالت دوم همان برنامه کمی بیش از 600 کیلوبایت است.

در  حالت 1 شما هر برنامه ای می توانید بسازید و دست شما در استفاده از  کامپوننت ها بسیار باز است و تقریبا تمام کامپوننت های موجود در لازاروس را  می توانید استفاده نمایید.
در حالت دوم می توانید از 61 کامپوننت مخصوص  این مبدل استفاده نمایید که البته این کامپوننت ها تقریبا هر کاری را شما  نیاز داشته باشید انجام می دهند.(از یک جای ترسیم [Canvas] تا دسترسی به  مخاطبین، دوربین، ژیروسکوپ، بانک اطلاعاتی و .. )

نکته: برنامه نویسی اندروید در لازاروس بسیار راحت است، امااااااا... تنظیم کردن آن کمی دشوار!
نکته2: در هر دو روش شما از پشتیبانی کامل یونیکد و BiDi بهره مند هستید. (این بزرگترین مزیت استفاده از لازاروس در برابر دلفی است.)
نکته3:  این محیط توسعه کاملا رایگان و متن باز است که برای من بهتر از هر چیزی  است. چرا که من اگر خودم می گویم باید حق نرم افزار از سوی همه ی مشتریان  پرداخت شود و با متخلف (قفل شکن) برخورد شود، نباید از نرم افزار کرک شده  استفاده کنم. (الآن 2 سالی هست که دیگه دلفی کار نمی کنم، مگر برای تغییرات در برنامه های گذشته ی خودم که البته دارم سعی می کنم اونها رو به لازاروس منتقل کنم.)
نکته4: قابلیت های دیگری هم وجود داره که به این مقاله مرتبط نیست

امیدوارم به جواب خود رسیده باشید.
یاحق

----------


## arman.m.80

دوست عزیز از پاسخ شما متشکرم ولی من به این راحتی ها نمیتونم زبانمو عوض کنم و برام خیلی سخته (این که میگم خیلی سخت ینی خیلی خیلی سخت).
من دنبال راه حل میگردم نه پاک کردن صورت مسئله.
من چن سالی هست که دلفی کار میکنم و برنامه های زیادی هم با اون نوشتم مخصوصا توی فایرمانکی برنامه های من  هم جوری هست که کاربرانم حجم برنامه اصلا برایشان مهم نیست. حتی پیش اومده که یکی از برنامه های من 100MB  :متعجب:  شده (حدودی) ولی چون کاربرانم حق انتخاب ندارند  نمیتونن از نرم افزار دیگه ای استفاده کنن .
و یه دلیل دیگه: من حدود 4 (4ماه با وجود این که من با دلفی و فایر مانکی حداقل تا جایی که نیاز دارم کاملا آشنا هستم) ماه روی تولید این نرم افزار کار کردم و حاضر نیستم به این راحتی نرم افزارمو بزارم کنار و بیام توی محیطی که باهاش آشنا نیستم بشینم کد بنویسم و احتمالا با وجود این شرایط من باید همین 4ماهو توی 10 ماه بنویسم.
ولی بازم از کمک و راهنمایی شما ممنونم دوست عزیز. :لبخند:

----------


## arman.m.80

> حالا شما با این روش کامپایل اندروید بگیرید من تست نکردم شاید حجمش کم بشه 
> حالا شما تست کنید


من الان توی  محیط کارم نیستم و دسترسی به کامپوتری که روش دلفی xe5 به بالا(دلفی که روش اندروید بشه نوشت ) نسب باشه ندارم فردا نتیجه تستو بهت میگم ولی بازم از راهنماییت ممنونم. :چشمک:

----------


## arman.m.80

> حالا شما با این روش کامپایل اندروید بگیرید من تست نکردم شاید حجمش کم بشه 
> حالا شما تست کنید


من تست کردم هیچ تاثیری نداشت.  :ناراحت: 
دوستان لطفا راهنمایی کنید .

----------


## arman.m.80

دوستان لطفا راهنمایی کنید کارم گیره
من از روشهای بالا استفاده کردم ولی فقط 2MB فرق کرد.
اگه روش دیگه ای میشناسید بگید . :لبخند:

----------


## ابوالفضل عباسی

یک سوال برام پیش اومد برای چه میخواهید حجم apk تولید شده کم باشد؟ :متفکر: 
من خودم هم نمی دونم چرا در دلفی Xe5 حجم فایل apk تولید شده 5 مگ هست. :اشتباه: 
در دلفی xe6 حجم فایل apk تولید شده 6 مگ هست. :ناراحت: 
در دلفی xe7 حجم فایل apk تولید شده 7 مگ میشه و یا در دلفی xe8 حجم فایل apk تولید شده 8 مگ میشه واقعا عجیبه هرچه نسخه دلفی بروز تر میشه فایل تولیدی هم بیشتر میشه.
اما با این حال یه برنامه نوشتم با کلی عکس داخلش و استفاده FireDac حجمش شده 10 مگ که به نظر خودم ایده آل هستش(اما نسبت به بقیه نرم افزار های هم تراز خودم زیاد هست)

----------


## arman.m.80

برای این میخوام حجم فایلم کم باشه چون این برنامه که شده  26MB  برنامه سنگینی نیست ولی برنامه ای که در آخر خواهش شد حداقل 70MB میشود(70MB البته امیدوارم به لطف دوستان حداقل بشه 35MB). :لبخند: 
برای همینه که دارم از شما کمک میخوام وگرنه من به حجم فعلی مشکلی ندارم.
دوستان اگه بازم راهی به نظرتون رسید بهم بگین. :لبخند:

----------


## golbafan

بارها در این سایت گفتم از دلفی برای نوشتن انروید استفاده نمیکنن!

----------


## arman.m.80

دوستان یه سوال نرم افزار های upx خیلی خوب کار میکنن ولی فایل apk را پشتیبانی نمیکنن. :ناراحت: 
شما نرم افزار  upx میشناسید که فایل apk را هم پشتیبانی کنه؟

----------


## arman.m.80

> بارها در این سایت گفتم از دلفی برای نوشتن انروید استفاده نمیکنن!


مرسی که گفتید ولی حیف  که خیلی دیر گفتید اینو باید وقتی xe5 بیرون اومد میگفتین.
الان تنها چیزی که کار منو حل میکنه یه راه حا خیلی خوبه که حجمو خیلی کمکنه. :ناراحت:

----------


## golbafan

چی بگم والا. در مورد RTTI چیزی شنیدی؟؟؟  باید غیر فعالش کنی (در همه یونیت ها)
http://docwiki.embarcadero.com/RADSt...e_%28Delphi%29

برای فشرده سازیش هم از ProGuard استفاده کنید

----------


## arman.m.80

چجوری میشه RTTI رو غیر فعال کرد؟
و اگه من RTTI رو غیر فعال کنم برای برنامم ضرر نداره؟
ایرادی در برناممم ایجاد نمیشه؟ :متفکر:

----------


## arman.m.80

یه کی کمک کنه ینی هیچکس نمیدونهRTTI رو چجوری غیر فعال کنم ؟و اگه منRTTI رو غیر فعال کنم برای برنامم ضرر نداره؟ایرادی در برناممم ایجاد نمیشه؟

----------

