parisa-ghorbani
parisa-ghorbani
خواندن ۳ دقیقه·۵ سال پیش

برنامه اندروید چگونه کامپایل و اجرا می شود

در این جلسه از آموزش اندروید قصد داریم با نحوه ساخته شدن و اجرا شدن برنامه اندروید آشنا شویم.

کامپایل شدن به معنای کنارهم قرار دادن و تبدیل کدهای و منابع برنامه و ساخت فایلی قابل اجرا برای دستگاه مقصد است. به برنامه ای که این کار را انجام می دهد کامپایلر گفته می شود. ممکن است برنامه ای برای محیط ویندوز کامپایل شود ( برنامه های ویندوزی) و یا برای اندروید کامپایل شود. ( برنامه های اندرویدی) اما هرکدام دارای شرایط و فرمت خاصی هستند که کامپایلر آن را کنترل می کند. برای استفاده از کامپایلر های مختلف برنامه ها و ابزار توسعه خاص مورد نیاز است. به عنوان مثال برای کامپایل کردن برنامه های اندرویدی می توان از Ecilipes یا Android studio و Intellij IDEA و غیره استفاده کرد. برای ساخت و کامپایل برنامه های ویندوزی از Visual Studio، Borland delphi و غیره استفاده کرد. بحث اصلی ما در مورد کامپایل برنامه اندروید است.

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

مرحله اول: ابتدا سورس کد ها و کتاب خانه ها توسط کامپایلر جاوا  که Javac نام دارد به بایت کد جاوا تبدیل می شود. بایت کد، کد تولید شده برای اجرا روی ماشین های مجازی است. این کد معمولاً سطح خیلی پایین تری از کد نوشته شده اصلی است اما سطح آن از سطح کد ماشین بالاتر است و معمولاً توسط ماشین مجازی به کد ماشین تبدیل و روی ماشین مقصد اجرا می شود. همانطور که می دانید برنامه های جاوا برای اجرا نیاز به سیستم عامل خاصی ندارند، بلکه هرجایی که Java Virtual Machine(JVM) نصب شده باشد قابل اجرا هستند. با نصب JVM روی هر سیستم عاملی می توان برنامه های جاوا را اجرا کرد. روی گوشی های اندروید هم یک JVM بهینه شده به نام Dalvik قرار دارد که برنامه نهایی را به زبان ماشین تبدیل و اجرا می کند.

مرحله دوم: بایت کد تولید شده توسط Proguard  که از ابزارهای gradle است بهینه و کدگذاری می شود که فایل نتیجه این مرحله DEX نام دارد و پسوند آن هم .dex است.

مرحله سوم: فایل DEX تولید شده به همراه منابع و متعلقات دیگر توسط aapt(Android Asset Packaging Tool) به یک پکیج تبدیل شده و پسوند آن apk می شود.

خیلی خوب . تا اینجا برنامه ساخته شد. حال نوبت شرح اجرای آن است.

  1. سیستم لینوکس اندروید برای هر برنامه ای که قرار است اجرا شود، از روی یک پروسس از قبل آماده به نام Zygote یک نسخه جدید فورک می کند (فورک نوعی کپی خیلی سریع) و سپس سورس برنامه در این پردازش جدید اجرا می شود.
  2. سپس داده های static را به Process اضافه می کند. این داده ها عبارتند از Dalvik code، منابع برنامه و غیره… .
  3. سپس یک Dalvik Heap ( حافظه) برای برنامه در نظر گرفته می شود و اپ آنقدر می تواند فضا اضافه کند تا به آن حداکثر برسد. اگر اپ از حافظه تخصیص داده شده فراتر رود پیام خطای out of memory دریافت خواهیم کرد.

در ضمن باید اشاره کنم که اندروید برای مدیریت حافظه از  (Last recently used) LRU استفاده می کند تا سوئیچ کردن بین اپ ها سریع تر اتفاق بیافتد. یعنی با خارج شدن کاربر از برنامه آن را از بین نمی برد، زیرا شاید فوراً نیاز شد و باعث افت راندمان می شود. اگر سیستم دچار کمبود RAM شد آن پروسسی که دروترین ارجاع را داشته را Kill می کند تا فضای خالی برای process های جدید ایجاد شود.

اندرویدآموزش اندرویدandroidآموزش برنامه نویسیکامپایل
علاقمند به اخبار مربوط به فناوری اطلاعات، کامپیوتر،سخت افزار، نرم افزار، IT، برنامه نویسی، موبایل، اندروید، اینترنت و وب، عکاسی، بازی و ترندهای روز دنیا | با من همراه باشید :-)
شاید از این پست‌ها خوشتان بیاید