הסקריפט ndk-build

הסקריפט ndk-build יוצר פרויקטים שנעשה בהם שימוש בגרסת ה-build מבוססת-היצרן של NDK המערכת. יש תיעוד ספציפי יותר עבור Android.mk ו- נעשה שימוש בהגדרת Application.mk מאת ndk-build.

פנימי

הרצת הסקריפט ndk-build מקבילה להרצת הפקודה הבאה:

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

$GNUMAKE נקודות ל-GNU Maker מגרסה 3.81 ואילך, וגם <ndk> נקודות לספריית ההתקנה של ה-NDK. אפשר להשתמש כדי להפעיל ndk-build מסקריפטים אחרים של מעטפת, או אפילו ליצור קבצים.

הפעלה משורת הפקודה

הסקריפט ndk-build נמצא בספריית ההתקנה של NDK ברמה העליונה. כדי להריץ אותו משורת הפקודה, להפעיל אותו בתוך ספריית הפרויקט של האפליקציה או מתחתיה. לדוגמה:

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

בדוגמה הזו, <project> מפנה אל תיקיית השורש של הפרויקט, ו-<ndk> היא הספרייה שבה התקנתם את ה-NDK.

אפשרויות

כל הפרמטרים ל-ndk-build מועברים ישירות ל-GNU make הבסיסי שמריצה את הסקריפטים של build NDK. שילוב של ndk-build עם בצורה ndk-build <option>. לדוגמה:

$ ndk-build clean

האפשרויות הבאות זמינות:

clean
מסירים את כל הקבצים הבינאריים שנוצרו בעבר.

הערה: ב-Mac OS X, מריצים את ndk-build clean עם מספר גבוה של הפעלות מקבילות עלול לגרום לשגיאת build כוללת את ההודעה הבאה:

rm: fts_read: No such file or directory

כדי למנוע את הבעיה, מומלץ לא להשתמש ב-jN או בחירה בערך קטן יותר עבור N, כמו 2.

V=1
השקת build והצגת פקודות build.
-B
אילוץ בנייה מחדש מלאה.
-B V=1
לאלץ הרצה מלאה של בנייה מחדש והצגת פקודות build.
NDK_LOG=1
להציג הודעות יומן פנימיות של NDK (משמשות לניפוי באגים ב-NDK עצמו).
NDK_DEBUG=1
אילוץ גרסת build שאפשר לבצע לניפוי באגים (ראו טבלה 1).
NDK_DEBUG=0
אילוץ גרסת build של גרסה (ראו טבלה 1).
NDK_HOST_32BIT=1
צריך להשתמש ב-toolchain תמיד במצב 32-bit.
NDK_APPLICATION_MK=<file>
Build, באמצעות קובץ Application.mk ספציפי שמצביע עליו משתנה NDK_APPLICATION_MK.
-C <project>
צור את הקוד המקורי עבור נתיב הפרויקט שנמצא בכתובת <project>. מועיל אם לא רוצים cd אליו במסוף.

גרסאות build שניתנות לניפוי באגים לעומת גרסאות build

משתמשים באפשרות NDK_DEBUG, ובמקרים מסוימים, AndroidManifest.xml כדי לציין גרסת build של ניפוי באגים או גרסה, התנהגות שקשורה לאופטימיזציה והוספת סמלים. בטבלה 1 רואים את הערכים תוצאות של כל שילוב אפשרי של הגדרות.

טבלה 1. תוצאות של NDK_DEBUG (שורת פקודה) ו android:debuggable שילובים (מניפסט).

הגדרת מניפסטNDK_DEBUG=0 NDK_DEBUG=1NDK_DEBUG לא צוין
android:debuggable="true" ניפוי באגים; סמלים; מותאם*1 ניפוי באגים; סמלים; ללא אופטימיזציה*2 (כמו NDK_DEBUG=1)
android:debuggable="false"השקה; סמלים; בוצעה אופטימיזציה השקה; סמלים; לא בוצעה אופטימיזציההשקה; ללא סמלים. מותאם*3
*1: שימושי ליצירת פרופיילינג.
*2: ברירת המחדל להרצה של ndk-gdb.
*3: מצב ברירת מחדל.

הערה: הערך 'NDK_DEBUG=0' הוא שווה ערך ל- 'APP_OPTIM=publish', והידור באמצעות '-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 Maker, והוא ישתמש בו אלא אם הגדרת $GNUMAKE כך שיצביע על יצרן לא מתאים.

מסדי נתונים של הידור JSON

ב-NDK r18 ואילך, ndk-build יכול ליצור מסד נתונים הידור בפורמט JSON.

אפשר להשתמש ב-ndk-build compile_commands.json כדי ליצור את מסד הנתונים מבלי לבנות את הקוד, או ndk-build GEN_COMPILE_COMMANDS_DB=true אם לבנות וליצור את מסד הנתונים תופעת לוואי.