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

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


اشتراک گذاری :

۱۳۹۸/۴/۲۹- تعداد بازدید : ۱۶۳۵ بار - دسته بندی : برنامه نویسی موبایل

در این مقاله ی آموزشی من قصد دارم یاد بدم که چطور یک فایل نصبی اندرویدی را باز کنیم و درونش را نگاه کنیم . 

 

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

 

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

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

 

برای اینکه بفهمیم اپلیکیشن اندرویدی دیجیکالا با چه زبانی نوشته شده است ابتدا باید ماهیت فایل نصبی اندرویدی یا همان 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 گرافیکی 

 

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

خب برای فهم اینکه یک اپ با چه زبانی نوشته شده است نیاز نیست خیلی عمیق وارد بحث محتویات آن زیپ شده ی یک فایل 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 در میان پوشه های سورس و وجود فایل های با فرمت مرتبط با زبان کاتلین بیانگر این است که اپلیکیشن دیجی کالا در حال حاضر از زبان برنامه نویسی کاتلین استفاده میکند 

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

 

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

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

 

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

 

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

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

اتمام مقاله 


محصولات برگزیده مناسب شما
مطالب زیر ممکن است برای شما مفید باشد
6 دلیل برای یادگیری کاتلین آموزش ساخت اسلایدر تصاویر اپ اندرویدی با زبان Kotlin مقایسه Kotlin با Java برای برنامه نویسان اندرویدی Vue.js چیست و چطور Vue.js را شروع کنیم ؟ لینوکس اوبونتو چیست ؟ بررسی گذشته و حال اوبونتو
مدرس : مهندس عباس نیک زاد
سوابق تحصیلی
  • دیپلم ریاضی و فیزیک از تیزهوشان
  • لیسانس کارشناسی مهندسی نرم افزار
  • کارشناس ارشد هوش مصنوعی
  • دارای مدرک IELTS نمره ۷/۵
  • دارای مدرک GMAT نمره ۷۲۰
سوابق شغلی
  • مدیر کل شرکت آوای هوشمند سام به شماره ثبت ۴۴۸۳۸ و شناسه ی ملی ۱۴۰۰۶۷۷۷۰۵۱
  • تدرس در دانشگاه ها و آموزشگاه های معتبر از سال ۱۳۹۴
  • مدرس دوره های آموزشی در زمینه ی برنامه نویسی از سال ۹۵ ( آواسام ، سامنتا )
  • مدیر کل انجمن علمی دانشگاه به مدت یکسال و مدیر انجمن علمی کامپیوتر به مدت یکسال
  • برنامه نویس اپلیکیشن های اندرویدی مختلف برای سازمان های دولتی ، شرکت های خصوصی و ...
  • بازی سازی با انجین یونیتی به مدت دو سال در تیم k2games
  • برنامه نویسی و طراحی وب بصورت فریلنسر از سال ۱۳۹۰
تخصص ها
  • تسلط کامل بر فریمورک های PHP همچون Codeigniter , Laravel , Yii , ….
  • برنامه نویسی موبایل و تبلت های هوشمند اندرویدی به مدت ۴ سال با زبان Java kotlin objective-c javascript
  • مسلط به مفاهیم گرافیکی و نرم افزار های گرافیکی Photoshop , corel , illustrator و …
  • مسلط به مدلسازی سه بعدی Blender
  • مسلط به بازی سازی و زبان سی شارپ در انجین Unity3D
  • تسلط کامل بر مفاهیم هوش مصنوعی
  • متخصص در زمینه لینوکس
  • تسلط کامل برنامه نویسی زبانهای C , Python , C++ , C# , Java , JavaScript
  • تسلط کامل بر فریمورک ها یا کتابخانه های محبوب جاوااسکریپت نظیر Angular , Vue.js , React , Jquery و …
  • مطالعه و فعالیت در زمینه ی امنیت و هک

برچسب ها : سورس دیجیکالا دیجی کالا دیجیکالا آموزش دیجیکالا سورس کد دیجی کالا سورس سایت دیجیکالا سورس اپلیکیشن دیجیکالا دیجیکالا با چی نوشته شده دوره ی دیجیکالا آموزش ساخت سایت دیجیکالا آموزش ساخت اپلیکیشن دیجیکالا دوره ی پروژه محور دیجیکالا لاراول دوره ی آموزش لاراول digikala دوره ی آموزشی لاراول کاتلین دوره ی آموزش کاتلین آموزش برنامه نویسی کاتلین آموزش برنامه نویسی موبایل آموزش فارسی kotlin آموزش فارسی کاتلین دوره ی آموزش kotlin

برای نوشتن نظر باید وارد شوید ورود

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