Skrip ndk-build

Skrip ndk-build membuat project yang menggunakan sistem build berbasis Make NDK. Tersedia dokumentasi yang lebih spesifik untuk konfigurasi Android.mk dan Application.mk yang digunakan oleh ndk-build.

Internal

Menjalankan skrip ndk-build setara dengan menjalankan perintah berikut:

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

$GNUMAKE mengarah ke GNU Make 3.81 atau yang lebih baru, dan <ndk> mengarah ke direktori penginstalan NDK Anda. Anda dapat menggunakan informasi ini untuk memanggil ndk-build dari skrip shell lain, atau bahkan membuat file sendiri.

Memanggil dari command line

Skrip ndk-build berada di direktori penginstalan NDK level teratas. Untuk menjalankannya dari command line, panggil skrip ini selagi berada di atau dalam direktori project aplikasi Anda. Contoh:

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

Dalam contoh ini, <project> mengarah ke direktori utama project Anda, dan <ndk> adalah direktori tempat Anda menginstal NDK.

Opsi

Semua parameter pada ndk-build diteruskan langsung ke perintah GNU make sumber yang menjalankan skrip build NDK. Gabungkan ndk-build dan opsi dalam format ndk-build <option>. Contoh:

$ ndk-build clean

Tersedia opsi-opsi berikut:

clean
Hapus biner yang dibuat sebelumnya.

Catatan: Di Mac OS X, menjalankan ndk-build clean dengan banyak eksekusi paralel dapat menyebabkan error build yang mencakup pesan berikut:

rm: fts_read: No such file or directory

Untuk menghindari masalah ini, pertimbangkan untuk tidak menggunakan pengubah -jN atau memilih nilai yang lebih kecil untuk N, seperti 2.

V=1
Meluncurkan build dan menampilkan perintah build.
-B
Memaksa rebuild lengkap.
-B V=1
Memaksa build ulang penuh, dan tampilkan perintah build.
NDK_LOG=1
Menampilkan pesan log NDK internal (yang digunakan untuk men-debug NDK itu sendiri).
NDK_DEBUG=1
Memaksa build yang dapat di-debug (lihat tabel 1).
NDK_DEBUG=0
Memaksa build rilis (lihat tabel 1).
NDK_HOST_32BIT=1
Selalu menggunakan toolchain dalam mode 32-bit.
NDK_APPLICATION_MK=<file>
Membuat project, menggunakan file Application.mk spesifik yang ditunjuk oleh variabel NDK_APPLICATION_MK.
-C <project>
Membuat kode native untuk jalur project yang terletak di <project>. Berguna jika Anda tidak ingin mengubah direktori (cd) ke <project> di terminal.

Build yang dapat di-debug vs build rilis

Gunakan opsi NDK_DEBUG dan, dalam kasus tertentu, AndroidManifest.xml untuk menentukan build debug atau build rilis, perilaku terkait pengoptimalan, dan penyertaan simbol. Tabel 1 menunjukkan hasil dari setiap kombinasi setelan yang memungkinkan.

Tabel 1. Hasil kombinasi NDK_DEBUG (command line) dan android:debuggable (manifes).

Setelan ManifesNDK_DEBUG=0 NDK_DEBUG=1NDK_DEBUG tidak ditetapkan
android:debuggable="true" Debug; Simbol; Dioptimalkan*1 Debug; Simbol; Tidak dioptimalkan*2 (sama dengan NDK_DEBUG=1)
android:debuggable="false"Rilis; Simbol; Dioptimalkan Rilis; Simbol; Tidak dioptimalkanRilis; Tanpa simbol; Dioptimalkan*3
*1: Berguna untuk membuat profil.
*2: Default untuk menjalankan ndk-gdb.
*3: Mode default.

Catatan: `NDK_DEBUG=0` setara dengan `APP_OPTIM=release`, dan mengompilasi dengan `-O2`. `NDK_DEBUG=1` setara dengan `APP_OPTIM=debug` dalam `Application.mk`, dan mengompilasi dengan `-O0`. Untuk informasi tentang `APP_OPTIM`, lihat Application.mk.

Sintaks pada baris perintah, misalnya:

$ ndk-build NDK_DEBUG=1

Persyaratan

Anda memerlukan GNU Make 4 untuk menggunakan ndk-build atau NDK secara umum. NDK menyertakan salinan GNU Make-nya sendiri dan akan menggunakannya kecuali jika Anda telah menetapkan variabel lingkungan $GNUMAKE untuk mengarah ke make yang tidak sesuai.

Database kompilasi JSON

Di NDK r18 dan yang lebih baru, ndk-build dapat membuat database kompilasi JSON.

Anda dapat menggunakan ndk-build compile_commands.json untuk membuat database tanpa harus menulis kode, atau ndk-build GEN_COMPILE_COMMANDS_DB=true jika ingin menyusun dan membuat database sebagai efek samping.