NDK چیست ؟ و دلیل استفاده از اندروید NDK چیه؟

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

NDK چیست؟

 ما بیشتر برنامه های اندرویدی خودمون را با زبان برنامه نویسی Java انجام میدهیم . ولی این بدان معنی نیست که این تنها ترین و بهترین راه هست .  مثلا  ما همه ی اون محیط های که برای بازی سازی استفاده میکنیم از اندروید NDK استفاده میکنند .
NDK چیست ؟

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

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

دلایل استفاده از NDK اندروید چیه؟

نکته ی دیگر که  اضافه بر مطالبی که برای شما گفتم تا بفهمید NDK چیه و به چه دلیلی از اون استفاده میکنیم  باید بدانید این هست که وقتی شما برنامه نویس های اندروید یک برنامه اندرویدی کوچیک برای خودتون انجام میدهید در اون موقع این اپلیکیشن توسط تعدادی مفسر به byteCode جاوا تبدیل میشود . ولی نکته مهم اینجا هست که وقتی ما از NDK اندروید استفاده میکنیم دیگر از هیج مفسری کمک نمیگیریم. یعنی این برنامه ما به صورت مستقیم به CPU در ارتباط قرار میگیرد . و معنی این کار این هست که ما از 100% کارایی اندروید استفاده میکنیم.
با یک مثال دیگر ساده تر میشود فهمید که ان دی کا چیست ؟ و دلایل استفاده از ان دی کا چیه ؟ فرض کنید ما میخواهیم یک تابع یا یک کدی که به یک پردازنده خاص وابسته هست رو به برنامه خودمون اضافه کنیم . و هدف ما این هست که با زبان جاوا به یک کارایی بالا برسیم . این کار غیره ممکن هستش و ما باید از زبان های دیگری مانند C و C++ استفاده کنیم . تا این کار رو سریع تر انجام دهیم ولی سوال مهم تر اینکه فرض کنیم ما زبان سی  و یا سی پلاس پلاس را بلد باشم حالا چگونه اون رو در برنامه خودم پیاده سازی کنم .در این مرحله هست که ما به NDK نیاز پیدا میکنیم و برای اینکه زبان های مانند C  را برای اجرای آن یکپارچه سازی کنیم به آن نیازداریم . فکر کنم الان فهمیده باشید که NDK چیست ؟

مهم ترین دلایل استفاده از NDK ؟

  1. از جمله دلایلی که ما را مجاب میکند تا از NDK استفاده کنیم این هست که کتابخانه های بومی معادل را در APK قرار دهیم .
  2.  اینکه در بیشتر مواقع بدون کامپایل دوباره اجرا میشود.
  3. ما میتوانیم به کمک ان دی کا به اجزای فیزیکی مثل حسگر ها دسترسی پیدا کنیم.
  4.  اگر از NDK استفاده کنیم این قابلیت را پیدا میکنیم که از کد های C و C++ که کدنویسی کردیم دوباره استفاده کنیم .
  5.  دلیل دیگری که از مزایای استفاده از NKD اندروید هست ، اینکه ما موقعی که از ان دی کا استفاده میکنیم کد های اپلیکیشن ما دیگر قابل مهندسی معکوس یا به اصطلاح decompile نمیشود .که یک نقطه ی قوت برای آن محسوب میشود و به خاطر همین امر هست که در مواردی که ما میخواهیم یک اپلیکیشن بنویسم که از نظر امنیت بسیار بالا باشد از NDK استفاده میکنیم که مخفف Native Development kit هست .

NDK چگونه کار میکند ؟

NDK چگونه کار میکند ؟

نحوی کار NDK به چه صورت میباشد ؟

در بخش بالا ما فهمیدیم که NDK چیست ؟ و دلایل استفاده از ان دی کا چیه ؟ حالا باید بدانیم که نحوی کار ان دی کا به چه صورت میباشد . اولین کاری که برنامه نویس باید انجام دهید این هست که یک کد به زبان C و یا C++ بنویسد بعد از آن ما برای اینکه پلتفرمی که از آن استفاده میکنیم مشخص شود به یک چیزی به نام makefile نیاز داریم .و همچنین برای اینکه کتابخانه های مشترک ایجاد کنیم به ndk-build نیاز داریم. بعد از این مراحل برنامه جاوای ما کتابخانه های بومی رو فراخوانی میکند و این فراخوانی از طریق JNU که به اصطلاح به آن رابط بومی جاوا میگویند انجام میشود .در واقع رابط بومی جاوا یک مسیر درست میکند تا به کمک آن ByteCode آن کد های که به زبان برنامه نویسی کاتلین و یا جاوا نوشته شده است را برای تعامل با کد های بومی کامپایل کند .

چه زمانی از ان دی کا استفاده کنیم ؟

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

یعنی این یک چیز حتمی نیست که ما هر وقتی از NDK استفاده کنیم باید عملکرد ما افزایش پیدا کند. و اینکه ما در زمان های که از NDK استفاده میکنیم پیچیدگی کدهایمان نیز افزایش میبابد .اگر به صورت خلاصه بهتون بگم فقط این را بدانید که ما فقط و فقط باید زمانی از Native Code استفاده کنیم که برای ما خیلی ضروری باشد . فقط صرفا برای این نباشد که دوست داریم با سی و یا سی پلاس پلاس کدنویسی کنیم.

در هنگام بررسی کردن اینکه آیا از API استفاده کنیم یا نه باید بررسی کنید که API های اندروید آن عملکردی که خواست ما هست را برای ما مهیا میکند و یا خیر.  با این این را نیز بگویم که NDK یکی ازبهترین گزینه ها برای این هست که ما کد های بزرگی که به زبان برنامه نویسی C و C++ نوشته شده است را استفاده مجدد کنیم. همچنین نکته ی دیگر که نیاز هست بدانید اینکه NDK یک سیستم ساخت برای ما ارائه میدهد که به ما یک قابلیت میدهد .

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

نتیجه گیری

هدف ما این بود که شما با خواندن این مقاله شما فهمیده باشید که چگونه از زبان های بومی مانند سی و سی پلاس پلاس در برنامه نویسی اندروید استفاده کنید  .  ما فهمیدیم که کلمه NDK چیست ؟ و به چه معنایی میباشد و همچنین دلایل استفاده از NDK چیه؟ همچنین دانستیم زمانی که در برنامه های خودمون نیاز نداشته باشیم که از تمامی کارای برنامه استفاده کنیم از زبان های مانند جاوا و کاتلین استفاده میکنیم ولی در صورتی که نیاز داشته باشیم از حداکثر کارایی برنامه استفاده کنیم باید از زبان های مادر و بومی مانند C و C++ استفاده کنیم.
برای امتیاز به این نوشته کلیک کنید!
[کل: 7 میانگین: 5]
اشتراک‌گذاری

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

یک نظر

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *