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

 

اپلیکیشن مد نظر ما اپلیکیشن اندرویدی فروشگاه اینترنتی دیجی کالا است . خیلی از برنامه نویسان شاید این سوال را در ذهن داشته باشند که اپلیکیشن دیجیکالا با چه زبان و سبکی طراحی شده است ؟ یا شاید شما یک شرکت یا تیم برنامه نویسی باشید و مشتاق فهمیدن راز درون اپلیکیشن دیجی کالا باشید ؟‌

 

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

 

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

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

 

اپلیکیشن دیجی کالا با چه زبان برنامه نویسی نوشته شده است؟

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

apk مخفف Android application package است و یک فایل نصبی برای سیستم عامل اندروید است درست مثل فایل های نصبی ویندوزی که دانلود میکنیم و یک برنامه را نصب میکنیم . 

در حقیقت apk یک فایل فشرده از کدهای برنامه نویسی شده شامل فایل های .dex و resources, assets, certificates, و فایل manifest می باشد . 

فایل های apk میتواند هر نامی داشته باشد ولی باید فرمت آن فایل حتما apk باشد . 

apk را شما همانند یک فایل zip یا rar در نظر بگیرید که یک سری فایل ها را در یکجا زیپ کرده است . 

معمولا بعد از بازگشایی apk درون آن پوشه ها و فایل های زیر را خواهیم دید . 

 

  • پوشه ی META-INF 
    شامل فایل مانیفست و گواهینامه ها و ...
  • پوشه ی lib
    این پوشه شامل کد کامپایل های مربوط به معماری های مختلف پلتفرم های مختلف است مثلا armeabi فایلی است که کد کامپایل مربوط به پردازنده های ARM درونش قرار دارد و ...
  • پوشه ی res
    منابعی که نیاز به compile نیست در اینجا قرار میگیرد
  • پوشه ی assets
    دارایی های یک برنامه که کامپایل نمیشوند مثل تصاویر و ... که توسط AssetManager قابل دسترسی هستند
  • فایل AndroidManifest.xml
    این فایل شناسنامه ی برنامه های اندرویدی هست شامل مجوز ها ، ورژن برنامه ، نام پکیج برنامه و ...
  • فایل classes.dex
    این فایل توسط ماشین دالویک که هسته ی اندروید هست قابل فهمه و میشه گفت کدهای کامپایل شده هستند در فرمت dex
  • فایل resources.arsc
    این فایل شامل منابع از پیش کامپایل شده است برای مثال منبع xml گرافیکی 

 

علاوه بر موارد بالا ممکن است اپلیکیشنی که شما آنرا unzip میکنید یک سری فایل ها و فولدرهای اضافی داشته باشد .

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

چطور اپ دیجی کالا را دیکامپایل کنیم ؟ در ادامه ی مقاله بصورت کامل این موارد را خواهیم گفت حتما ادامه را مطالعه کنید.

 

زبان برنامه نویسی اپلیکیشن دیجیکالا چیست ؟

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

فایل APK دیجیکالا را دانلود کردیم و سپس فرمت فایل را به zip تغییر دادیم ( کاری که شما هم باید انجام دهید ) . 

سپس با استفاده از یک نرم افزار کمک کننده مثل WinRar آنرا اکسترکت کردیم . 

 

چیزی که بدست آوردیم مشابه تصویر زیر است : 

 

زبان برنامه نویسی اپلیکیشن دیجی کالا - زبان مورد استفاده دیجی کالا - سورس اپلیکیشن دیجی کالا

 

در تصویر بالا میبینید بعد از اینکه فایل APK دیجی کالا را به فرمت zip تبدیل میکنیم برای مثال digikala.zip و سپس انرا توسط wiinrar باز میکنیم تمام فایل ها و فولدرهایی که در بالا ذکر کردیم درونش وجود دارد 

 

خب بعد از اینکه عمل بازگشایی اپلیکیشن دیجی کالا را انجام دادیم اگر یکی از فایل ها را باز کنیم مثلا فایل AndroidManifest.xml چیزی که خواهیم دید مشابه تصویر زیر خواهد بود . 

 

سورس اپلیکیشن دیجی کالا - زبان برنامه نویسی اپلیکیشن دیجی کالا - دیجیکالا با چی نوشته شده

 

دلیل این اتفاق این است که ما فقط فایل فشرده شده ی digikala را باز کردیم و سپس تمامی محتویات آن کامپایل شده است و فقط ماشین مجازی dalvik میفهمد که درون این  فایل ها چی به چیه !

برای اینکه ما بتوانیم سورس کد درون یک APK را بفهمیم وقت آن رسیده است که فایل apk را دیکامپایل ( عمل معکوس کامپایل کردن ) کنیم .

برای راحتی کار دیکامپایل کردن یک فایل نصبی APK بهتره از ابزارهای انلاین برای این کار استفاده کنیم 

مثلا وقتی عبارت decompile apk را در گوگل جستجو کنید میتوانید به سایت apkdecompilers.com برسید که ابزار مفیدی برای دیکامپایل کردن فایل های apk است . 

بعد از باز کردن سایت مذکور کافیست روی انتخاب فایل یا Choose File کلیک کنید سپس دکمه ی decompile your apk را کلیک کنید . 

 

سورس کد اپلیکیشن دیجی کالا - آموزش ساخت اپلیکیشن دیجی کالا - بررسی زبان برنامه نویسی اپلیکیشن دیجی کالا

 

بعد از چند دقیقه apk دیکامپایل شده بصورت فایل zip به شما تقدیم میشود و میتوانید دانلود کنید 

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

 

سورس اپلیکیشن دیجی کالا - آموزش ساخت دیجی کالا - آموزش ساخت اپلیکیشن دیجی کالا

 

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

اگر یادتان باشد ما بالاتر محتویات درون فایل AndroidManifest.xml را باز کرده بودیم و علائم عجیب غریب مشاهده میکردیم در حالیکه الان اگر AndroidManifest.xml را باز کنیم کدهای واقعی xml مربوط به AndroidManifest.xml اپلیکیشن اندرویدی دیجیکالا را مشاهده خواهیم کرد . 

در تصویر زیر محتویات AndroidManifest.xml را میبینید که کاملا نام مجوز  ها ، اکتیویتی ها ، ریسایور ها و ... مشخص است : 

 

سورس کد اپلیکیشن دیجی کالا - آموزش ساخت اپلیکیشن دیجی کالا - زبان برنامه نویسی اپ دیجیکالا

 

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

 

همه ما میدانیم که فریمورک ها و زبان های برنامه نویسی که با آنها میشود اپلیکیشن اندرویدی پیاده سازی کرد کدام ها هستند . من آنها را اینجا لیست میکنم : 

 

  • اپ React Native 
  • اپ Cordova 
  • اپ flutter
  • اپ نیتیو که جاوا و کاتلین نوشته میشود 

 

ما بعد از اینکه سورس کد را بدست آوردیم ( همانطور که در بالا گفته شد ) میتوانیم بر اساس سناریو های زیر زبان برنامه نویسی را پیدا کنیم : 

 

  1. اگر درون پوشه ی assets هر نوع فایلی با فرمت .bundle وجود داشته باشد ( بطور پیشفرض یک فایل با نام index.android.bundle ) اپلیکیشن با React Native ساخته شده است . 
  2. اگر درون پوشه ی assets پوشه ای با نام www وجود داشته باشد و محتوای مسیر assets/www مشابه تصویر زیر باشد پس این اپلیکیشن با cordova پیاده سازی شده است : 
    ساختار اپلیکیشن دیجی کالا - زبان برنامه نویسی دیجی کالا - دیجی کالا با چی نوشته شده است

  3. اگر گزینه ی 1 و 2 درست نبود به احتمال بسیار زیادی با زبان های نیتیو مثل جاوا و یا کاتلین نوشته شده است و وجود پوشه ای به نام kotlin بیانگر این است که حتما زبان برنامه نویسی کاتلین در اپ استفاده شده است . 

وجود فولدری به نام kotlin در میان پوشه های سورس و وجود فایل های با فرمت مرتبط با زبان کاتلین بیانگر این است که اپلیکیشن دیجی کالا در حال حاضر از زبان برنامه نویسی کاتلین استفاده میکند 

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

 

تصویر زیر هم فرمت یکی از فایل های درون سورس است که گویای این است که زبان کاتلین در این پروژه حتما به کار گرفته شده است : 

سورس اپلیکیشن دیجیکالا - آموزش ساخت دیجیکالا - آموزش ساخت اپلیکیشن دیجیکالا

 

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

 

زبان برنامه نویسی اپلیکیشن دیجی کالا - آموزش ساخت اپلیکیشن دیجی کالا

 

جمع بندی :  

در حال حاضر که ما بررسی کردیم و در مقاله ی بالا نیز بصورت کامل شرح داده شده است زبان برنامه نویسی اپلیکیشن موبایل دیجی کالا با زبان کاتلین است و کاتلین نیز یکی از زبان های خوب و جدیدی است که شمار زیادی از شرکتها از آن استفاده میکنند. این امکان هم وجود دارد که تیم برنامه نویسی دیجی کالا ، در آینده اپلیکیشن خود را با زبان دیگری توسعه بدهد و شاید هم زبان اپ آنها با همان کاتلین  بماند. در کل منظورم این است که آینده را نمیشود تشخیص داد و این مقاله برای شرح حال اپلیکیشن دیجی کالا بود. همچنین وب سایت دیجیکالا با زبان برنامه نویسی PHP پیاده سازی شده است اگر بخواهید یک فروشگاهی همانند دیجیکالا با PHP بسازید باید از فریمورک های آن مثل لاراول یا کدایگنایتر استفاده کنید.

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

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

 

لینک کوتاه این مقاله : https://avasam.ir/post/116
این سیستم برپایه ی علاقه مندی شما یک دوره ی مناسب به شما پیشنهاد میدهد
مرا بسوی بهترین دوره ی آموزشی که برای من مناسب است هدایت کن 🤖
برای استفاده ی دیگران و حمایت از ما در جامعه های زیر به اشتراک بگذارید

.:: نظرهای کاربران ::.
صمد / 4 ماه پیش

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

زهرا احسانی / 2 سال پیش

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

پشتیبانی آواسام :

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

Zinat Mokhtari / 5 سال پیش
سلام و روز بخیر. مطلب مفیدی بود، دستتون درد نکنه، ممنون
دوره ی آموزش پروژه محور ساخت کافه بازار دوره ی آموزش پروژه محور ساخت فروشگاه دیجیکالا آموزش لاراول دوره ی آموزش ویو جی اس