فایل‌های اندرویدی با پسوند APK (Android Kit Package) شناخته می‌شوند. در بسیاری از مواقع لازم است فایل نصبی یک برنامه‌ یا اپلیکیشن‌های نصب‌شده روی دستگاه را استخراج کنیم. حتی ابزارهای انتقال فایل مانند SHAREit یا Zapya نیز برای انتقال برنامه ابتدا آن‌ها را استخراج می‌کنند.

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

پیش‌نیازها و ابزارهای موردنیاز

این آموزش از پایه‌ترین مفاهیم شروع می‌شود و هر کاربری می‌تواند آن را دنبال کند؛ اما داشتن موارد زیر باعث درک راحت‌تر مطالب می‌شود:

  • آشنایی مقدماتی با محیط اندروید

  • آشنایی مقدماتی با خط فرمان لینوکس یا ویندوز

  • کابل USB مناسب دستگاه

برای استخراج دستی، به ابزار ADB نیز نیاز داریم که در ادامه نحوه‌ی نصب و استفاده از آن توضیح داده می‌شود.

روش اول: استخراج APK با ابزارهای آماده

اپلیکیشن‌های متعددی برای استخراج فایل APK وجود دارند. این روش ساده‌ترین راه استخراج اپلیکیشن‌های اندرویدی است. معروف ترین این ابزار ها APK Extractor نام دارد که می‌توان آن را از این لینک از گوگل پلی استور دانلود و نصب کرد.

پس از نصب APK Extractor و اجرای آن، لیستی از اپلیکیشن های نصب شده بر روی دستگاه (حتی اپلیکیشن های سیستمی) برای شما نمایش داده خواهد شد.

تصویر 1: لیست اپلیکیشن ها در APK Extractor

کافی‌ست برنامه موردنظر را انتخاب کرده و گزینه Extract را بزنید.

تصویر 2: مشخصات اپلیکیشن پس از کلیک بر روی آن

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

تصویر 3: درخواست اپلیکیشن برای مشخص کردن محل ذخیره سازی

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

روش دوم: پشت‌صحنه‌ی استخراج APK (برای علاقه‌مندان به لایه‌های عمیق)

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

محل ذخیره‌سازی فایل‌های APK در اندروید

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

در سیستم عامل اندروید، نرم‌افزار هایی که نصب هستند (حتی نرم‌افزار های سیستمی) در مسیری به آدرس زیر قرار دارند:

/data/app/

در ادامه این آدرس اگر نام پکیج (PackageName) برنامه مورد نظر را قرار دهیم، وارد دایرکتوری مربوط به آن برنامه می‌شویم که در آن فایل یا فایل های نصبی برنامه وجود دارند. برای مثال برای اپلیکیشن گوگل کروم مسیر فایل های نصبی آن به صورت زیر خواهد بود:

==data/app/~~veEPt8Z6758n6uOSM-2hyQ==/com.android.chrome-h8CgYphleP0qOpP_3Kamrw/

که دسترسی به این مسیر برای همه‌ی اپلیکیشن ها مجاز است.

توجه: دسترسی به مسیر /app/data بدون دسترسی روت ممکن نیست. بنابراین نمیتوان لیست برنامه های نصب شده را از طریق این مسیر مشاهده کرد. اما با داشتن نام پکیج مورد نظر، میتوان آدرس دقیق آن را پیدا کرد و به مسیر آن دسترسی داشت.

پیدا کردن Package Name اپلیکیشن

راهکار های بسیاری برای یافتن PackageName اپلیکیشن ها در اندروید وجود دارد. یکی از رایج ترین راه ها استفاده از ابزار های آماده است. برای مثال در ابتدای همین مقاله از ابزار APK Extractor استفاده کردیم. این ابزار PackageName هر اپلیکیشن را زیر آن می‌نویسد.

تصویر 4: نمایش نام پکیج زیر اسم اپلیکیشن

اما اگر نخواهیم از ابزار های آماده استفاده کنیم چطور؟

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

ADB چیست و چگونه نصب می‌شود؟

ابزار ADB یا Android Debug Bridge یک ابزار قدرتمند برای اجرای دستورات بر روی دستگاه اندروید است. این ابزار برای ویندوز، لینوکس و مکینتاش وجود دارد. اگرچه به صورت پیشفرض روی این سیستم عامل ها نیست اما دانلود و استفاده از آن بسیار آسان است. کافیست با استفاده از این لینک وارد وبسایت رسمی اندروید شوید و SDK Platform-Tools را بسته به سیستم عامل خود دانلود کنید. پس از دانلود، محتویات آن را در یک پوشه دلخواه استخراج کنید. حالا میتوانید از ADB موجود در پوشه استخراج شده استفاده کنید. 

تصویر 5: نمایی از محتویات SDK Platform-Tools سیستم عامل ویندوز

همچنین میتوانید این مسیر را به PATH سیستم خود اضافه کنید تا در هر پوشه دلخواهی بتوانید از ابزار های SDK Platform-tools استفاده کنید.

فعال سازیUSB Debugging

در ادامه مسیر پیدا کردن نام پکیج های اپلیکیشن های اندروید و سپس استخراج فایل APK آنها، نیازمند آن هستیم که ابتدا  گزینه های توسعه دهندگان یا Developer Option را روی دستگاه اندرویدی خود فعال کنیم. برای این کار کافیست وارد  تنظیمات شوید، بر روی گزینه درباره تلفن یا About Phone کلیک کنید، وارد بخش اطلاعات نرم‌افزاری یا Software Information شوید و چندین بار پشت سر هم روی شماره ساخت یا Build number کلیک کنید. پس از فعال شدن گزینه های توسعه دهندگان، مجدد وارد تنظیمات شوید، این بار وارد بخش جدیدی که اضافه شده است (گزینه های توسعه دهندگان) شوید و گزینه اشکال زدایی با USB یا USB debugging را فعال کنید.

تصویر 6: فعال بودن گزینه های توسعه دهندگان و USB debugging

اتصال از طریق ADB

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

adb shell

پس از ورود به محیط خط فرمان اندروید، کافیست با دستور زیر لیست پکیج های موجود در دستگاه را لیست کنیم:

pm list packages

از آنجایی که ممکن است خروجی این دستور لیستی بسیار طولانی باشد، بهتر است با استفاده از دستور grep جستوجو را محدود به نام اپلیکیشن مد نظر کنیم. برای مثال، برای پیدا کردن نام پکیج اپلیکیشن گوگل کروم از دستور زیر استفاده میکنیم:

pm list packages | grep chrome

خروجی این دستور فقط پکیج هایی که در نام آنها عبارت  chromeوجود دارد را لیست میکند.

یافتن مسیر فایل‌های نصبی (APK)

پس از پیدا کردن نام پکیج مورد نظر، حالا نوبت آن است که مسیر فایل های نصب شده برای آن پکیج را پیدا کنیم. این آخرین مرحله پیش از استخراج فایل های APK نصب شده برای آن پکیج است. در خط فرمان ADB که در مرحله قبل باز کرده بودیم، دستور زیر را وارد میکنیم (میتوانید نام پکیج مورد نظر را جایگذاری کنید):

pm path com.android.chrome

خروجی این دستور چیزی شبیه به تصویر زیر خواهد بود:

تصویر 7: مسیر های موجود برای فایل APK گوگل کروم

از آنجایی که فایل APK گوگل کروم در این دستگاه به صورت split یا تکه تکه نصب شده است، برای آن چند فایل APK وجود دارد.

استخراج فایل APK از طریق ADB

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

mkdir /sdcard/Extracted_APK

با وارد کردن این دستور، یک پوشه در حافظه داخلی تلفن همراه با نام Extracted_APK  ایجاد خواهد شد. حال میتوان فایل های APK مورد نظر را به این پوشه استخراج کرد:

cp /data/app/~~veEPt8Z6758n6uOSM-2hyQ==/com.android.chrome-h8CgYphleP0qOpP_3Kamrw==/*.apk /sdcard/Extracted_APK

توجه: به جای مسیر استفاده شده، مسیری را که در مرحله قبل بدست آوردید استفاده کنید.

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