رفتن به مطلب
جامعه‌ی برنامه‌نویسان مُدرن ایران
کامبیز اسدزاده

آخرین تغییرات و به‌روزرسانی‌های NDK

پست های پیشنهاد شده

ابزار 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
  • تشکر شده 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

جناب اسدازاده!

تشکر از مقاله ها و اشتراک گذاری دانش فنی خودتون در اختیار افرادی امثال من، قدردان زحمات شما هستیم!

 

  • تشکر شده 1

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×