اسکریپت ndk-build

اسکریپت ndk-build پروژه هایی را می سازد که از سیستم ساخت مبتنی بر Make-based NDK استفاده می کنند. اسناد خاص تری برای پیکربندی Android.mk و Application.mk وجود دارد که توسط ndk-build استفاده می شود.

داخلی

اجرای اسکریپت ndk-build معادل اجرای دستور زیر است:

$GNUMAKE -f <ndk>/build/core/build-local.mk
<parameters>

$GNUMAKE به GNU Make 3.81 یا بالاتر اشاره می کند و <ndk> به دایرکتوری نصب NDK شما اشاره می کند. می‌توانید از این اطلاعات برای فراخوانی ndk-build از اسکریپت‌های پوسته دیگر یا حتی فایل‌های make خودتان استفاده کنید.

از خط فرمان فراخوانی کنید

اسکریپت ndk-build در دایرکتوری نصب NDK سطح بالا زندگی می کند. برای اجرای آن از خط فرمان، زمانی که در دایرکتوری پروژه برنامه خود یا در زیر آن هستید، آن را فراخوانی کنید. به عنوان مثال:

$ cd <project>
$ <ndk>/ndk-build

در این مثال، <project> به دایرکتوری ریشه پروژه شما اشاره می کند و <ndk> دایرکتوری است که NDK را در آن نصب کرده اید.

گزینه ها

تمام پارامترهای ndk-build مستقیماً به دستور GNU make که اسکریپت‌های ساخت NDK را اجرا می‌کند، ارسال می‌شود. ndk-build و گزینه ها را به شکل ndk-build <option> ترکیب کنید. به عنوان مثال:

$ ndk-build clean

گزینه های زیر در دسترس هستند:

clean
باینری های قبلی تولید شده را حذف کنید.

توجه: در Mac OS X، اجرای ndk-build clean با تعداد زیادی از اجراهای موازی ممکن است منجر به یک خطای ساخت شود که شامل پیام زیر است:

rm: fts_read: No such file or directory

برای جلوگیری از این مشکل، از اصلاح کننده -j N استفاده نکنید یا مقدار کوچکتری را برای N انتخاب نکنید، مانند 2.

V=1
build را اجرا کنید و دستورات ساخت را نمایش دهید.
-B
مجبور به بازسازی کامل
-BV=1
مجبور به بازسازی کامل، و نمایش دستورات ساخت.
NDK_LOG=1
نمایش پیام های گزارش داخلی NDK (برای اشکال زدایی خود NDK استفاده می شود).
NDK_DEBUG=1
یک ساخت قابل اشکال زدایی را اجباری کنید ( جدول 1 را ببینید).
NDK_DEBUG=0
اجباری ساختن رهاسازی ( جدول 1 را ببینید).
NDK_HOST_32BIT=1
همیشه از زنجیره ابزار در حالت 32 بیتی استفاده کنید.
NDK_APPLICATION_MK=<file>
ساخت، با استفاده از یک فایل Application.mk خاص که توسط متغیر NDK_APPLICATION_MK به آن اشاره شده است.
-C <project>
کد بومی مسیر پروژه واقع در <project> را بسازید. اگر نمی خواهید در ترمینال خود به آن cd مفید است.

اشکال زدایی در مقابل نسخه های انتشار

از گزینه NDK_DEBUG و در موارد خاص AndroidManifest.xml برای تعیین اشکال‌زدایی یا انتشار ساخت، رفتار مرتبط با بهینه‌سازی و گنجاندن نمادها استفاده کنید. جدول 1 نتایج هر ترکیب ممکن از تنظیمات را نشان می دهد.

جدول 1. نتایج ترکیبات NDK_DEBUG (خط فرمان) و android:debuggable (مانیفست).

تنظیم مانیفست NDK_DEBUG=0 NDK_DEBUG=1 NDK_DEBUG مشخص نشده است
android:debuggable="true" اشکال زدایی؛ نمادها؛ بهینه شده*1 اشکال زدایی؛ نمادها؛ بهینه نشده*2 (همانند NDK_DEBUG=1)
android:debuggable="false" انتشار؛ نمادها؛ بهینه شده است انتشار؛ نمادها؛ بهینه نشده است انتشار؛ بدون نماد؛ بهینه شده*3
*1: برای پروفایل مفید است.
*2: پیش فرض برای اجرای ndk-gdb .
*3: حالت پیش فرض.

توجه: «NDK_DEBUG=0» معادل «APP_OPTIM=release» است و با «-O2» کامپایل می‌شود. «NDK_DEBUG=1» معادل «APP_OPTIM=debug» در «Application.mk» است و با «-O0» کامپایل می‌شود. برای اطلاعات بیشتر درباره «APP_OPTIM»، به Application.mk مراجعه کنید.

سینتکس در خط فرمان به عنوان مثال:

$ ndk-build NDK_DEBUG=1

الزامات

برای استفاده از ndk-build یا به طور کلی NDK به GNU Make 4 نیاز دارید. NDK شامل کپی خودش از GNU Make است و از آن استفاده خواهد کرد مگر اینکه متغیر محیطی $GNUMAKE طوری تنظیم کرده باشید که به یک ساخت نامناسب اشاره کند.

پایگاه داده های جمع آوری JSON

در NDK r18 و جدیدتر، ndk-build می تواند یک پایگاه داده کامپایل JSON ایجاد کند.

می توانید از ndk-build compile_commands.json برای تولید پایگاه داده بدون ساخت کد خود استفاده کنید، یا اگر می خواهید پایگاه داده را به عنوان یک اثر جانبی بسازید و تولید کنید ndk-build GEN_COMPILE_COMMANDS_DB=true استفاده کنید.