هم اکنون عضو شوید

ورود

فراموشی گذرواژه

گذروازه خود را فراموش کردید ؟

ورود

عضو شوید

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

dex در اندروید چیست ؟

dex در اندروید چیست ؟

سلام دوستان عزیز در این سری از مقالات وب سایت پروگرمچی به بررسی dex در اندروید چیست ؟ می پردازیم شاید شما هم جزء آن دسته از Developer ها باشید که بخواهید Dex را ریشه یابی کنید در ادامه آن را برای شما شرح خواهیم داد.dex مخفف Dalvik Executable Format است.

dex چیست ؟ – مسئله این است

یکی از ویژگی های قابل توجه در ماشین مجازی Dalvik وجود فایل dex در اندروید است در واقع این سیستم dex قلب تپنده در پشت سیستم اندروید است. ماشین مجازی Dalvik در اندروید از bytecode موجود در جاوا استفاده نمی کند یعنی کد ها برای خوانده شدن و اجرا شدن برپایه سیستم قدیمی جاوا پیش نمی روند. بلکه bytecode های شما به dex فایل تبدیل می شوند.

به زبان ساده Dex یعنی چی ؟

یک فرمتی به نام dex وجود داره ( همانند فرمت فایل هایی مثل exe , zip و… ) زمانی که شما کدهاتون رو به زبان جاوا یا کاتلین می نویسید و می خواهید اون رو به apk تبدیل کنید gradle یک خروجی از بخش کد شما درست می کنه و اون رو در اصطلاح برای شما فرمت می کنه که یکسری ساختمان داده داره و وقتی اپ شما روی گوشی نصب میشه فایل dex توسط سیستم توی background خوانده میشه و مورد استفاده قرار میگیره.

کدهای کامپایل شده را به زبان ساده Dex می گویند

هر نرم افزار می تواند بسته به میزان کدی که برای آن نوشته می شود یک یا چند فایل dex داشته باشد زمانی که کامپایل نرم افزار شروع می شود ابتدا فایل های کد برنامه شما به dex فایل تبدیل می شوند سپس تمامی آنها مجتمع شده و به یک فایل apk امضا شده تبدیل می شود.

فرمت فایل Dex همانند زیر است.

۱٫ File Header
۲٫ String Table
۳٫ Class List
۴٫ Field Table
۵٫ Method Table
۶٫ Class Definition Table
۷٫ Field List
۸٫ Method List
۹٫ Code Header
۱۰٫ Local Variable List

فایل های Dex را می توان با استفاده از نرم افزار dexdump که در sdk اندروید وجود دارد مهندسی معکوس کرد.

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

این آموزش هم به پایان رسید.

موفق و پیروز باشید.

درباره نویسنده

با زبان های برنامه نویسی C# , Java , Php به صورت تخصصی کار کردم و بیشتر وقتم رو در برنامه نویسی می گذرونم علاقه زیادی به ساخت اپلیکیشن اندروید دارم.