اسکریپت 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 نتایج هر ترکیب ممکن از تنظیمات را نشان می دهد.
تنظیم مانیفست | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG مشخص نشده است |
---|---|---|---|
android:debuggable="true" | اشکال زدایی؛ نمادها؛ بهینه شده*1 | اشکال زدایی؛ نمادها؛ بهینه نشده*2 | (همانند NDK_DEBUG=1) |
android:debuggable="false" | انتشار؛ نمادها؛ بهینه شده است | انتشار؛ نمادها؛ بهینه نشده است | انتشار؛ بدون نماد؛ بهینه شده*3 |
*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
استفاده کنید.