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 sama 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 dapat menggunakan informasi ini untuk memanggil ndk-build dari skrip shell lain, atau bahkan membuat file Anda 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 ke 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
    

Opsi berikut tersedia:

clean
Menghapus biner yang dibuat sebelumnya.

Catatan: Di Mac OS X, menjalankan ndk-build clean dengan banyak eksekusi paralel dapat menghasilkan 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 rebuild lengkap, dan menampilkan 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 (lihat Toolchain 64-bit dan 32-bit).
NDK_APPLICATION_MK=<file>
Membuat project, menggunakan file Application.mk spesifik yang ditunjukkan oleh variabel NDK_APPLICATION_MK.
-C <project>
Membuat kode native untuk jalur project yang terletak di <project>. Berguna jika Anda tidak ingin cd ke sana pada terminal Anda.

Build 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 dari 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 menjalankan kompilasi dengan -O2. Sementara itu, NDK_DEBUG=1 setara dengan APP_OPTIM=debug di Application.mk dan menjalankan kompilasi dengan -O0. Untuk informasi selengkapnya tentang APP_OPTIM, lihat Application.mk.

Sintaks pada command line, misalnya:

    $ ndk-build NDK_DEBUG=1
    

Toolchain 64-Bit dan 32-Bit

Beberapa toolchain disertai dengan versi 64-bit dan 32-bit. Misalnya, direktori <ndk>/toolchain/<name>/prebuilt/ dan <ndk>/prebuilt/ dapat memuat folder linux-x86 sekaligus linux-x86_64 untuk fitur Linux dalam mode, berturut-turut, 32-bit dan 64-bit. Skrip ndk-build otomatis memilih versi toolchain 64-bit jika OS host mendukungnya. Anda dapat memaksakan penggunaan toolchain 32-bit menggunakan NDK_HOST_32BIT=1 baik di lingkungan Anda atau di command line ndk-build.

Perhatikan bahwa fitur 64-bit lebih baik dalam menggunakan resource host (misalnya, fitur ini lebih cepat dan mampu menangani program yang lebih besar), dan tetap dapat menghasilkan biner 32-bit untuk Android.

Persyaratan

Anda memerlukan GNU Make 3.81 atau yang lebih baru untuk menggunakan ndk-build atau NDK secara umum. Skrip build akan mendeteksi fitur yang tidak sesuai dengan Make, dan menghasilkan pesan error.

Jika Anda telah menginstal GNU Make 3.81, tetapi perintah make default tidak menjalankannya, tentukan GNUMAKE di lingkungan Anda agar mengarah ke sana sebelum menjalankan ndk-build. Contoh:

    $ export GNUMAKE=/usr/local/bin/gmake
    $ ndk-build
    

Anda dapat mengganti fitur bawaan host lainnya dalam $NDK/prebuilt/<OS>/bin/ dengan variabel lingkungan berikut:

    $ export NDK_HOST_AWK=<path-to-awk>
    $ export NDK_HOST_ECHO=<path-to-echo>
    $ export NDK_HOST_CMP=<path-to-cmp>