النص البرمجي لإصدار ndk
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
ينشئ النص البرمجي ndk-build
مشاريع تستخدم الإصدار المستند إلى التصميم من 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 من نصوص برمجية أخرى ضمن واجهة الأوامر أو حتى النصوص الخاصة بك
إنشاء الملفات.
الاستدعاء من سطر الأوامر
يتوفّر النص البرمجي 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
لتجنُّب هذه المشكلة، ننصحك بعدم استخدام "-jN
".
أو اختيار قيمة أصغر لـ N
، مثل 2.
-
V=1
-
إطلاق أوامر الإصدار وعرض أوامر الإصدار
-
-B
-
فرض عملية إعادة بناء كاملة.
-
-B V=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
المتطلبات
أنت بحاجة إلى GNU Make 4 لاستخدام ndk-build أو NDK بشكل عام. يتضمن NDK
من صنع GNU Make واستخدام ذلك ما لم يتم تعيين $GNUMAKE
متغير البيئة للإشارة إلى العلامة التجارية غير المناسبة.
قواعد بيانات تجميع JSON
في لعبة NDK r18 والإصدارات الأحدث، يمكن أن تنشئ لعبة ndk-build
قاعدة بيانات تجميع JSON.
يمكنك استخدام ndk-build compile_commands.json
لإنشاء قاعدة البيانات.
بدون إنشاء الرمز، أو ndk-build GEN_COMPILE_COMMANDS_DB=true
إذا
نريد إنشاء قاعدة البيانات وإنشائها كتأثير جانبي.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# The ndk-build script\n\nThe `ndk-build` script builds projects that use the NDK's Make-based build\nsystem. There is more specific documentation for the\n[Android.mk](/ndk/guides/android_mk) and\n[Application.mk](/ndk/guides/application_mk) configuration used\nby `ndk-build`.\n\nInternals\n---------\n\nRunning the `ndk-build` script is equivalent to running the following command: \n\n```\n$GNUMAKE -f \u003cndk\u003e/build/core/build-local.mk\n\u003cparameters\u003e\n```\n\n`$GNUMAKE` points to GNU Make 3.81 or later, and\n`\u003cndk\u003e` points to your NDK installation directory. You can use\nthis information to invoke ndk-build from other shell scripts, or even your own\nmake files.\n\nInvoke from the command line\n----------------------------\n\nThe `ndk-build` script lives in the top level NDK installation directory. To run it\nfrom the command line, invoke it while in or under your application project directory.\nFor example: \n\n```\n$ cd \u003cproject\u003e\n$ \u003cndk\u003e/ndk-build\n```\n\nIn this example, `\u003cproject\u003e` points to your\nproject's root directory, and `\u003cndk\u003e` is the directory where\nyou installed the NDK.\n\n### Options\n\nAll parameters to ndk-build are passed directly to the underlying GNU `make`\ncommand that runs the NDK build scripts. Combine `ndk-build` and\noptions in the form `ndk-build \u003coption\u003e`. For example: \n\n```\n$ ndk-build clean\n```\n\n\nThe following options are available:\n\n\n`clean`\n\n: Remove any previously generated binaries.\n **Note:** On Mac OS X, running `ndk-build clean` with a\n high number of [parallel executions](https://www.gnu.org/software/make/manual/html_node/Parallel.html) may result in a build error that\n includes the following message:\n\n ```\n rm: fts_read: No such file or directory\n ```\n\n\n To avoid this issue, consider not using the `-j`\u003cvar translate=\"no\"\u003eN\u003c/var\u003e\n modifier or selecting a smaller value for \u003cvar translate=\"no\"\u003eN\u003c/var\u003e, such as 2.\n\n\n`V=1`\n:\n Launch build, and display build commands.\n\n\n`-B`\n:\n Force a complete rebuild.\n\n\n`-B V=1`\n:\n Force a complete rebuild, and display build commands.\n\n\n`NDK_LOG=1`\n:\n Display internal NDK log messages (used for debugging the NDK itself).\n\n\n`NDK_DEBUG=1`\n:\n Force a debuggable build (see [table 1](#dvr)).\n\n\n`NDK_DEBUG=0`\n:\n Force a release build (see [table 1](#dvr)).\n\n\n`NDK_HOST_32BIT=1`\n:\n Always use the toolchain in 32-bit mode.\n\n\n`NDK_APPLICATION_MK=\u003cfile\u003e`\n:\n Build, using a specific `Application.mk` file pointed to by the\n `NDK_APPLICATION_MK` variable.\n\n\n`-C \u003cproject\u003e`\n:\n Build the native code for the project path located at\n `\u003cproject\u003e`. Useful if you don't want to `cd`\n to it in your terminal.\n\n### Debuggable versus release builds\n\nUse the `NDK_DEBUG` option and, in certain cases,\n`AndroidManifest.xml` to specify debug or release build,\noptimization-related behavior, and inclusion of symbols. Table 1 shows the\nresults of each possible combination of settings.\n\n**Table 1.** Results of `NDK_DEBUG` (command line) and\n`android:debuggable` (manifest) combinations.\n\n| Manifest Setting | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG not specified |\n|----------------------------|------------------------------|----------------------------------|-----------------------------------|\n| android:debuggable=\"true\" | Debug; Symbols; Optimized\\*1 | Debug; Symbols; Not optimized\\*2 | (same as NDK_DEBUG=1) |\n| android:debuggable=\"false\" | Release; Symbols; Optimized | Release; Symbols; Not optimized | Release; No symbols; Optimized\\*3 |\n\n\\*1: Useful for profiling. \n\\*2: Default for running [`ndk-gdb`](/ndk/guides/ndk-gdb). \n\\*3: Default mode. \n\n**Note:** \\`NDK_DEBUG=0\\` is the equivalent of\n\\`APP_OPTIM=release\\`, and compiles with \\`-O2\\`. \\`NDK_DEBUG=1\\` is the equivalent of\n\\`APP_OPTIM=debug\\` in \\`Application.mk\\`, and compiles with \\`-O0\\`.\nFor more information about \\`APP_OPTIM\\`, see\n[Application.mk](/ndk/guides/application_mk).\n\nThe syntax on the command line is, for example: \n\n```\n$ ndk-build NDK_DEBUG=1\n```\n\nRequirements\n------------\n\nYou need GNU Make 4 to use ndk-build or the NDK in general. The NDK includes its\nown copy of GNU Make and will use that unless you've set the `$GNUMAKE`\nenvironment variable to point to an unsuitable make.\n\nJSON compilation databases\n--------------------------\n\nIn NDK r18 and newer, ndk-build can generate a\n[JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html).\n\nYou can either use `ndk-build compile_commands.json` to generate the database\nwithout building your code, or `ndk-build GEN_COMPILE_COMMANDS_DB=true` if you\nwant to build and generate the database as a side-effect."]]