وبلاگ - مطالب آموزشی

1
750
کالبدشکافی از نوع اندروید: بررسی اجزای تشکیل دهنده فایل APK – بخش اول

کالبدشکافی از نوع اندروید: بررسی اجزای تشکیل دهنده فایل APK – بخش اول

اپلیکیشن های اندروید به صورت Android Application Package یا به طور مخفف فایل های APK توزیع می شوند، با این حال برخی افراد به APK به عنوان جعبه سیاه می نگرند و هیچ ایده ای از نحوه ساخت و اجزای تشکیل دهنده آن ندارند. بسیاری از توسعه دهندگان اپلیکیشن تنها یک دانش سطحی و ابتدایی از APK دارند و در IDEهای همچون اندروید استودیو، تنها با یک کلیک ساده می توانید پروژه اندروید را به یک فایل APK تبدیل کنید.

در این مطلب آموزشی قصد داریم به شرح اجزای تشکیل دهنده یک اپلیکیشن اندروید بپردازیم و محتوای فایل APK را مورد بررسی قرار دهیم. APK یک فایل باینری است و تنها توسط ماشین ها قابل خواندن می باشد، از این رو قصد داریم به معرفی چندین ابزار بپردازیم که قادر به ترجمه محتوای این فایل به یک فرم قابل فهم تر برای انسان باشد، با ما همراه باشید.

پیش نیازها

برای انجام این کار به ابزارهای زیر نیاز دارید:

– آخرین نسخه از Android SDK

– یک گوشی اندروید یا امولاتور که نسخه 4.4 یا بالاتر اندروید بر روی آن نصب شده باشد

1. اما چه لزومی به بررسی اجزای داخلی APK وجود دارد؟

بسیاری از افراد تنها به خاطر حس کنجکاوی خود دوست دارند این کار را انجام دهند. اما برای سایرین دسترسی مستقیم به تصاویر، صوت ها و سایر اجزای بازی ها و اپلیکیشن های مورد علاقه، کار هیجان انگیزی است. اما دلیل این کار فراتر از یک کنجکاوی ساده می باشد.

یادگیری

چنانچه به تازگی کار خود در زمینه توسعه اپلیکیشن های اندروید را آغاز نموده اید، با نگاه انداختن به محتوای APK اپلیکیشن های محبوب که توسط افراد حرفه ای ساخته شده اند، اطلاعات ارزشمندی دستگیر شما می شود. برای نمونه اگر به فایل های لی اوت XML اپلیکیشنی که در گوشی ها با اندازه های مختلف صفحه نمایش به خوبی نمایش داده می شود، قادر به تقویت مهارت های ساخت لی اوت می شوید.

امنیت

اپلیکیشن های دانلود شده از منابع غیرمعتبر ممکن است حاوی کدهای مخرب باشد، لذا اگر یک توسعه دهنده ماهر و باتجربه باشید، با جداسازی محتوای این اپلیکیشن ها می توانید به کدها نگاه انداخته و بفهمید که در پشت پرده چه اقداماتی صورت گرفته است.

2. APK چگونه ساخته می شود؟

بدون داشتن دانش پایه در ارتباط با نحوه ساخت APK، قادر به درک اجزا و عملیات آن نمی باشید. در حقیقت ابزارهایی که برای تشریح فایل APK استفاده می شوند، با ابزارهای ساخت آن مشابه اند.

پروژه های اندروید از فایل هاب منبع جاوا، لی اوت های XML، متادیتاهای XML و منابعی مانند تصاویر، ویدیوها و صوت ها تشکیل شده اند. پیش از اینکه سیستم عامل اندروید قادر به استفاده از تمامی این فایل ها باشد، این فایل ها باید به یک فرم قابل درک برای آن تبدیل شوند. این تبدیل دربرگیرنده تسک های متوسطی است که به عنوان فرآیند بیلد اندروید شناخته شده اند. خروجی نهایی این عملیات بیلد، همان فایل APK می باشد.

در پروژه های اندروید استودیو، Android Plugin for Gradle تمامی تسک های فرآیند بیلد را بر عهده گرفته است.

یکی از مهم ترین تسک ها تولید فایلی به نام R.java می باشد که در واقع یک فایل است که توسعه دهندگان را قادر به دسترسی به لی اوت و منابع drawable در کد جاوا با استفاده از مقادیر ثابت عددی می کند. به منظور تولید این فایل ابزاری به نام aapt که مخفف Android Asset Packaging Tool است مورد استفاده قرار می گیرد. این ابزار تمامی منابع XML را همراه با فایل منیفست، به فرمت باینری تبدیل می کند.

تمامی فایل های جاوا که شامل R.java نیز هست، با استفاده از Java compiler به فایل های کلاس تبدیل می شوند. همانطور که می دانید فایل های کلاس شامل بایت کد هستند که قابل ترجمه توسط ران تایم انجین جاوا می باشد. با این حال اندروید از نوع خاصی ران تایم به نام Android runtime یا همان ART استفاده می کند که این ران تایم برای گوشی های موبایل بهینه سازی شده است. زمانی که همه فایل های کلاس تولید شدند، ابزاری به نام dx وارد عمل می شود که برای ترجمه بایت کد به Dalvik bytecode که فرمتی است که ART آن را متوجه می شود، مورد استفاده قرار می گیرد.

زمانی که منابع و فایل های جاوا پردازش شدند، در داخل یک فایل آرشیو که بسیار شبیه به JAR file است، قرار داده می شوند. این فایل بعدا با استفاده از یک کلید خصوصی که متعلق به توسعه دهنده اپلیکیشن است، امضا می شود. این دو عملیات توسط پلاگین Gradle و بدون استفاده از هیچ ابزار خارجی انجام می شوند. کلید توسعه دهنده، از یک keystore که توسط keytool مدیریت شده، دریافت می گردد.

در نهایت، چندین بهینه سازی برای آرشیو کردن فایل توسط ابزار zipalign صورت می پذیرد که از بابت اینکه حافظه مصرفی در حین اجرای اپلیکیشن، در حداقل مقدار ممکن است، اطمینان حاصل شود. تا این مرحله فایل آرشیوشده یک APK معتبر است که قابل استفاده توسط سیستم عامل اندروید می باشد.

در مطلب بعدی به تجزیه و تحلیل محتوای فایل APK خواهیم پرداخت، با ما همراه باشید.

 

منبع:

https://code.tutsplus.com