کامبیز اسدزاده 618 ارسال شده در دی 97 ابزار Android NDK به عنوان مجموعهاز ابزارهایی است که به شما امکان آن را میدهد تا بخشی از برنامههای خود را به صورت بومی تحت زبان C و ++C توسعه دهید. بنابراین NDK از چندین کتابخانهٔ در زمان اجرای ++C پشتیبانی میکند؛ در این پست در رابطه با آخرین تغییرات مرتبط با NDK اطلاع رسانی میشود. public class MyActivity extends Activity { /** * Native method implemented in C/C++ */ public native void computeFoo(); } بر اساس آخرین تغییرات کتابخانههای استاندارد libstdc++ به libc++ بهروز رسانی و تمامی ویژگیهای استاندارد C++17 پشتیبانی میشود که از نسخهٔ R18 به بعد در دسترس قرار گرفته است. نقل قول کتابخانههای اشتراکی (پویا) به صورت libc++_shared.so و کتابخانههای ایستا (استاتیکی) در قالب libc++_static.a میباشند. برخی از تغییرات مهم که لازم است به آنها توجه شود به صورت زیر میباشند: تغییرات اساسی از نسخهٔ NDK R17 آغاز شده است که در آن یکی از مهمترین و تکان دهندهترین تغیرات حذف GCC است که قرار بر این بود در نسخههای جدید NDK R18 پشتیبانی از GCC به صورت کامل حذف و Clang جایگزین آن شود. در نسخهٔ R18 پشتیبانی از gnustl, gabi++و stlport حذف شده است. پشتیبانی از ICS از اندرویدهای ۱۴ و ۱۵ به بعد حذف شده است. بر اساس قوانی جدید گوگل، بارگذاری اپلیکیشن از تاریخ آگوست ۲۰۱۹ به بعد در فروشگاه گوگل پلی (Play Store) نیازمند نسخهٔ معماری ۶۴ بیتی میباشد. پشتیبانی از C++17 در نسخهٔ R18 به بعد تایید نهایی و قابل استفاده شده است و همچنین در نسخههای R19 استفاده از تمامی استانداردهای منسوخ شده پیشنهاد نمیشود. کلمات کلیدی new و delete در استاندارد جدید ++C از نسخهٔ R18 منسوخ و در نسخهٔ R19 به طور کامل حذف خواهند شد. پشتیبانی از مدیریتهای استثناء (RTTI) در NDK به صورت پیشفرض غیر فعال میشود. مانند استثنائات، RTTI در libc++ پشتیبانی میشود، اما به صورت پیشفرض در android-build غیرفعال شده است که برای فعالسازی آن میتوانید از cmake و دیگر ابزارها استفاده کنید. هیچ محدودیتی در رابطه با هِدرهای سیپلاسپلاس در اندروید وجود ندارد. برای فعال سازی RTTI در برنامهٔ شما در ndk-build کد زیر را در application.mk اضافه کنید: APP_CPPFLAGS := -frtti همچنین برای فعال سازی آن برای یک ماژول خاص در ndk-build کد دستوری زیر را استفاده کنید: LOCAL_CPP_FEATURES := rtti روش دیگر به صورت زیر است: LOCAL_CPPFLAGS := -frtti نکته: تحت این سند ویژگیهای سیستمی STL در آینده حذف خواهند شد. توجه: libc++ یک کتابخانهٔ سیستمی نیست. در صورتی که از libc++_shared.so استفاده میکنید باید آن را در داخل فایل apk خود قرار دهید. در صورتی که از Gradle استفاده میکنید این کار به صورت خودکار انجام میشود. 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر