رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران

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

ابزار 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 استفاده می‌کنید این کار به صورت خودکار انجام می‌شود.

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


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

به گفتگو ملحق شوید

شما همین الآن می‌توانید مطلبی را ارسال و بعداً ثبت‌نام کنید. اگر حساب کاربری دارید، و با حساب کاربری خود مطلب ارسال کنید.
نکته: مطلب شما قبل از انتشار نیاز به بازبینی توسط میانجی‌گر‌ها دارد.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


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

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

×
×
  • جدید...