کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

توضیحاتی درباره ی معماری اندروید

مقاله ی آموزشی پیش رو نگاهی بر هسته ی اندروید انداخته و توضیحاتی چند درباره ی معماری اندروید به شما می دهد .

فهرست محتوا

1. توسعه ی اندروید

  • سیستم عامل اندروید

2. زمان اجرای اندروید

توسعه ی اندروید

اندروید یک سیستم عامل است مبتنی بر ویرایش 2.6 Linux که رابط برنامه سازی (programming interface) آن Java می باشد . گوگل در راستای افزایش کارایی و سرعت اندروید بر روی دستگاه های موبایل, درایورها و کتابخانه های متعددی را بهینه سازی و اصلاح کرده است .
به همراه خود ابزاری همچون مترجم (compiler), اشکال زدا (debugger), شبیه ساز دستگاه و همچنین دستگاه مجازی جاوا (JVD) و دستگاه مجازی دالویک (DVM) را در اختیار برنامه نویس قرار می دهد .
اندروید توسط اتحادیه ی Open Handset Alliance (به فارسی اتحادیه گوشی باز) برای اولین بار خلق شد که هم اکنون شرکت گوگل رهبری آن را بر عهده دارد .
اندروید از دستگاه مجازی مخصوصی بهره می گیرد که نمونه ی آن دستگاه مجازی دالویک است . Dalvikاز bytecode ویژه ی بهره می گیرد, از این رو شما نمی توانید بایت کدهای استاندارد جاوا را روی اندروید اجرا کنید . اندروید خود کلاسی ارائه می دهد که فایل های کلاس جاوا را به فایل های .dex (فایل های اجرایی دالویک : dalvik executable) تبدیل می کند . برنامه های اندروید به وسیله ی برنامه ی "aapt" (ابزار فشرده سازی و بسته بندی اندروید / android asset packaging tool) داخل یک فایل .apk (پکیج اندروید) بسته بندی می شوند . به منظور آسان سازی فرایند تولید و توسعه ی برنامه, گوگل ابزار طراحی و توسعه ی برنامه های اندروید (ADT) را ویژه ی Eclipse ارائه می دهد . ADT به صورت خودکار فایل های کلاس را به فایل های dex تبدیل کرده و برنامه ی کاربردی را طی پروسه ی توسعه ایجاد می کند .

زمان اجرای اندروید

حین راه اندازی سیستم اندروید, هسته ی لینوکس ابتدا فرایند "init" را فرا می خواند . init فایل های "/init.rc" و "init.device.rc" را می خواند . فایل "init.device.rc" مخصوص دستگاه می باشد, روی دستگاه مجازی این فایل "init.goldfish.rc". خوانده می شود .
init.rc فرایندی به نام "Zygote" را از طریق برنامه ی "/system/bin/app_process" اجرا می کند . Zygote کلاس های اصلی و هسته ی جاوا را بارگذاری کرده و اولین مرحله ی فرایند پردازش را بر روی آن ها اجرا می کند . این کلاس ها بعد توسط اپلیکیشن اندروید مجدداً مورد استفاده قرار می گیرند, از این رو مرحله ی مذکور راه اندازی آن ها را به مراتب تسریع می بخشد . پس از اینکه کار اولیه ی Zygote پایان یافت, فرایند مورد نظر به سوکت گوش فرا داده و منتظر درخواست (request) ها می ماند .
درایور ویژه ی به نام Binder وجود دارد که امکان ارتباط بین پردازشی (IPC) کارامدی را ایجاد می کند که در آن اجازه ی ارجاع دادن به اشیإ بین پروسه های مختلف ارسال یا رد و بدل می شود . اشیاء واقعی در Shared Memory (حافظه ی مشترک) ذخیره می گردند . از این طریق ارتباط بین پروسه های مختلف بهینه سازی می شود, زیرا که داده ها و اطلاعات کمتری باید انتقال داده شود .
اندروید مانند دیگر سیستم های لینوکس یک فضای مبادله (swap space) در اختیار نمی گذارد, بناربراین مقدار حافظه ی مورد استفاده تنها محدود به فضای ذخیره موجود در دستگاه می باشد .
اندروید همچنین از یک کتابخانه ی ویژه ی C به نام "Bionic" به جای Glibc استاندارد استفاده می کند . کتابخانه ی مزبور با Glibs سازگار نیست و در عین حال به حافظه ی کمتری نیاز دارد . Bionic دربردارنده یک نوع خاص از پیاده سازی نخ (Thread implementation) است که مصرف حافظه ویژه ی هر نخ را بهینه سازی کرده و زمان راه اندازی نخ های جدید را کاهش می دهد .
از ویرایش 2.3 به بعد, سیستم اندروید از Ext4 (سیستم فایل استاندارد لینوکس) بهره می گیرد . پیشتر اندروید از سیستم فایلYAFFS استفاده می کرد . برخی از شرکت های فروشنده, سیستم فایل استاندارد را با سیستم فایل مخصوص خود جایگزین می کنند . از آن جایی که تمامی اپلیکیشن ها, user application data لینوکس خود را دارند, به صورت پیش فرض داده ی مذکور تنها از طریق خود برنامه قابل دسترسی می باشد . برای به اشتراک گذاری داده ها شما می توانید فایل هایی را ذخیره کنید که تنها از طریق دیگر برنامه های کاربردی قابل دسترسی می باشند . این امکان نیز وجود دارد که برنامه ها Content Provider خود را ایجاد کنند . برنامه هایی که با گواهی یکسان امضاء می شوند, می توانند در فایل "AndroidManifest.xml" یک "android:sharedUserId" تعریف کنند . برنامه ای (با شناسه کاربری مشترک) که در پروسه ی یکسان و با شناسه ی کاربری یکسان در حال اجرا است, قادر است به فایل ها از برنامه های مشابه دسترسی پیدا کنند .
فایل .apk برنامه ی نصب شده در پوشه ی"data/app" قابل دسترسی می باشد . از طریق مدیر فایل (file manager) یا دستورهای پل رفع اشکال (adb) pull/push می توان برنامه را دانلود کرده و یا آن را روی دستگاه مورد نظر نصب کرد . برنامه های پولی که از گزینه ی به نام "Copy Protection" برخوردار می باشند, در پوشه ی "data/app-private" قابل دسترسی می باشد . کاربر به صورت پیش فرض اجازه ی دسترسی به آن را ندارد .
به منظور محافظت مضاعف از برنامه ی تولید شده دربرابر استفاده و کپی های غیرقانونی, برنامه نویس می تواند از کتابخانه ی "Licence Verification Library" استفاده کند . کتابخانه ی مزبور بررسی می کند آیا برنامه ی پولی از فروشگاه مجازی اندروید به صورت قانونی خریداری شده یا خیر .
در حال حاضر حداکثر حجم اپلیکشین های عرضه شده در اندروید مارکت معمولاً از 16 تا 24 مگابایت است . اینکه چقدر حجم برنامه ی کاربردی می تواند بزرگ باشد در زمان کامپایل سیستم اندروید مشخص می شود .

1394/08/14 5320 3214
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...