สคริปต์ ndk-build

สคริปต์ ndk-build จะสร้างโปรเจ็กต์ที่ใช้บิลด์แบบ Make ของ 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
ใช้ Toolchain ในโหมด 32 บิตเสมอ
NDK_APPLICATION_MK=<file>
สร้าง โดยใช้ไฟล์ Application.mk เฉพาะที่ชี้ไปยัง ตัวแปร NDK_APPLICATION_MK
-C <project>
สร้างโค้ดเนทีฟสำหรับเส้นทางโปรเจ็กต์ซึ่งอยู่ที่ <project> มีประโยชน์หากคุณไม่ต้องการcd ที่เครื่องอ่านบัตรดังกล่าว

บิลด์ที่แก้ไขข้อบกพร่องได้กับบิลด์ที่เผยแพร่ได้

ใช้ตัวเลือก NDK_DEBUG และในบางกรณี AndroidManifest.xml เพื่อระบุการแก้ไขข้อบกพร่องหรือเปิดตัวบิลด์ พฤติกรรมที่เกี่ยวกับการเพิ่มประสิทธิภาพ และการรวมสัญลักษณ์ ตาราง 1 แสดงฟังก์ชัน ผลลัพธ์ของชุดค่าผสมที่เป็นไปได้แต่ละรายการ

ตาราง 1 ผลลัพธ์ของ NDK_DEBUG (บรรทัดคำสั่ง) และ ชุดค่าผสม android:debuggable (ไฟล์ Manifest)

การตั้งค่าไฟล์ ManifestNDK_DEBUG=0 NDK_DEBUG=1ไม่ได้ระบุ NDK_DEBUG
android:debuggable="จริง" แก้ไขข้อบกพร่อง สัญลักษณ์; เพิ่มประสิทธิภาพ*1 แก้ไขข้อบกพร่อง สัญลักษณ์; ไม่ได้เพิ่มประสิทธิภาพ*2 (เหมือนกับ NDK_DEBUG=1)
android:debuggable="เท็จ"เผยแพร่ สัญลักษณ์; เพิ่มประสิทธิภาพ เผยแพร่ สัญลักษณ์; ไม่ได้เพิ่มประสิทธิภาพเผยแพร่ ไม่มีสัญลักษณ์ เพิ่มประสิทธิภาพ*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หากคุณ ต้องการสร้างและสร้างฐานข้อมูลเป็นผลข้างเคียง