این مقاله بخش دوم از فصل اول (نکات پایه ای اندروید) می باشد. اگر تاکنون بخش اول را مطالعه نکرده اید، لطفاً ابتدا مقاله “اندروید چیست؟” را مطالعه فرمایید. برنامه های اندروید (Android applications) به زبان جاوا نوشته میشوند. SDK ی اندروید کدها را کامپایل میکند – به همراه تمامی دیتاها و منابع دیگر (مانند تصاویر) – و در داخل پکیج اندروید و با پسوند apk. ذخیره مینماید. تمامی کدهای موجود در یک apk. مربوط به یک برنامه (application) تلقی میشوند و سیستم عامل اندروید این فایل را به عنوان یک فایل اجرایی در نظر میگیرد.
با نصب هر برنامه بر روی یک دستگاه اندرویدی یک پکیج امنیتی مخصوص به خود آن برنامه به آن تعلق میگیرد.
۱) سیستم عامل اندروید سیستمی مبنتی بر لینوکس با قابلیت پشتیبانی از چندکاربر است، بدین صورت که هر برنامه به معنی یک کاربر در نظر گرفته میشود.
۲) بصورت پیش فرض، سیستم به هر برنامه ای یک کد احراز هویت (Linux user ID) مخصوص به خودش را میدهد (این کد فقط برای سیستم قابل شناسایی است و برای برنامه شناخته شده نیست). سیستم برای تمام فایلهای برنامه مجوز صادر میکند، این کار باعث میشود تا تنها برنامه با آن کد هویتی خودش به فایلها دسترسی داشته باشد.
۳) هر پردازشی بر روی ماشین مجازی خودش (virtual machine) اجرا میشود. بنابراین، اجرای کدهای یک برنامه از برنامه دیگر در شرایط مجزا (isolation) انجام میشود.
۴) بصورت پیش فرض، اجرای هر برنامهای بر روی پردازش لینوکسی مربوط به خودش انجام میشود. اندروید، پردازش را زمانی اجرا میکند که کامپوننت نیاز به اجرا شدن داشته باشد (در ادامه به توضیح کامپوننت ها خواهیم پرداخت، نگران نباشید!)، پردازش را زمانی متوقف میکند (shuts down) که دیگر به آن نیازی نباشد یا زمانیکه سایر برنامه ها برای اجرا به حافظه بیشتر نیاز داشته باشند.
بدین روش، سیستم اندروید اصل حداقل امتیاز (principle of least privilege) را اجرا میکند. بر اساس این اصل، هر برنامه ای، بصورت پیش فرض، تنها به کامپوننت هایی دسترسی خواهد داشت که برای اجرا به آنها نیاز داشته باشد و نه بیشتر. این روش محیطی بسیار امن خواهد ساخت، بدین ترتیب که یک برنامه تا زمانیکه مجوزهای لازم را نداشته باشد، نمیتواند به منابع سیستم دسترسی داشته باشد.
اما، راه هایی وجود دارد که یک برنامه بتواند دیتاهای خود را با دیگر برنامه ها به اشتراک بگذارد و یا به سرویس هایی که سیستم میدهد، دسترسی داشته باشد:
۱) این قابلیت برای دو برنامه وجود دارد که بتوانند از یک کد هویتی (Linux user ID) مشترک استفاده کنند. بدین ترتیب هرکدام میتوانند از فایلهای دیگری استفاده نمایند. برای حفظ منایع سیستم، برنامه هایی که از یک کد هویتی استفاده میکنند میتوانند از یک ماشین مجازی استفاده کنند و بترتیب بر روی پردازشهای لینوکسی اجرا شوند (برنامه ها نیاز به sign شدن با یک گواهینامه (certificate) دارند).
۲) هر برنامه میتواند درخواست مجوز برای دسترسی به دیتای دستگاه (device) مانند کانتکت های کاربر (user’s contacts)، پیامهای SMS، حافظه جانبی (SD card)، دوربین، بلوتوث و غیره را داشته باشد. تمامی این مجوزها در زمان نصب برنامه از کاربر مورد سئوال قرار خواهد گرفت.
مطالب فوق توضیح مختصری در مورد چگونگی وجود و عملکرد یک برنامه در سیستم اندروید بود. سایر مواردی که در این مقاله توضیح داده خواهند شد، عبارتند از:
۱) چارچوب و ساختار کامپوننت ها که برنامه شما را می سازند.
۲) فایل مانیفست (manifest) که در آن کامپوننت ها تعریف میشوند و درخواست استفاده از دیتاهای دستگاه داده میشود.
۳) منابعی که از کدهای برنامه جدا هستند و اجازه میدهند که کدهای برنامه شما با درصد بالایی بهینه سازی شوند.
ادامه دارد …