Tập lệnh ndk-build
tạo dự án dùng hệ thống xây dựng dựa trên Make của NDK. Chúng tôi có tài liệu cụ thể hơn cho cấu hình Android.mk và Application.mk mà ndk-build
sử dụng.
Nội bộ
Việc chạy tập lệnh ndk-build
tương đương với chạy lệnh sau:
$GNUMAKE -f <ndk>/build/core/build-local.mk <parameters>
$GNUMAKE
trỏ đến GNU Make 3.81 trở lên và <ndk>
trỏ tới thư mục cài đặt NDK. Bạn có thể sử dụng thông tin này để gọi ndk-build từ các tập lệnh shell khác hoặc thậm chí là tệp tạo (make) của riêng bạn.
Gọi từ dòng lệnh
Tập lệnh ndk-build
nằm trong thư mục cài đặt NDK cấp cao nhất. Để chạy tập lệnh đó từ dòng lệnh, hãy gọi tập lệnh khi đang ở trong thư mục dự án ứng dụng.
Ví dụ:
$ cd <project> $ <ndk>/ndk-build
Trong ví dụ này, <project>
trỏ đến thư mục gốc của dự án, còn <ndk>
là thư mục mà bạn đã cài đặt NDK.
Tuỳ chọn
Tất cả tham số gửi đến ndk-build sẽ được truyền trực tiếp đến lệnh make
GNU cơ bản chạy các tập lệnh bản dựng NDK. Kết hợp ndk-build
và các tuỳ chọn trong biểu mẫu ndk-build <option>
. Ví dụ:
$ ndk-build clean
Hiện có các tuỳ chọn sau:
-
clean
- Xoá mọi tệp nhị phân đã tạo trước đó.
Lưu ý: Trên Mac OS X, việc chạy
ndk-build clean
có số lượt thực thi song song ở mức cao có thể dẫn đến lỗi bản dựng bao gồm thông báo sau:rm: fts_read: No such file or directory
Để tránh vấn đề này, hãy cân nhắc không sử dụng công cụ sửa đổi
-jN
hoặc chọn một giá trị nhỏ hơn choN
, chẳng hạn như 2. -
V=1
- Chạy bản dựng và hiển thị lệnh tạo.
-
-B
- Buộc tạo lại toàn bộ.
-
-B V=1
- Buộc tạo lại toàn bộ và hiển thị lệnh tạo.
-
NDK_LOG=1
- Hiển thị thông điệp nhật ký NDK nội bộ (dùng để gỡ lỗi cho chính NDK).
-
NDK_DEBUG=1
- Buộc một bản dựng có thể gỡ lỗi (xem bảng 1).
-
NDK_DEBUG=0
- Buộc một bản phát hành (xem bảng 1).
-
NDK_HOST_32BIT=1
- Luôn sử dụng chuỗi công cụ ở chế độ 32 bit.
-
NDK_APPLICATION_MK=<file>
-
Tạo bằng cách sử dụng một tệp
Application.mk
cụ thể được biếnNDK_APPLICATION_MK
trỏ đến. -
-C <project>
-
Tạo mã gốc cho đường dẫn dự án tại
<project>
. Hữu ích nếu bạn không muốncd
sang vị trí đó trong thiết bị đầu cuối của mình.
Bản dựng có thể gỡ lỗi và bản phát hành
Sử dụng tuỳ chọn NDK_DEBUG
và AndroidManifest.xml
trong một số trường hợp nhất định để chỉ định bản gỡ lỗi hoặc bản phát hành, hành vi liên quan đến tối ưu hoá và thêm ký hiệu. Bảng 1 cho thấy kết quả của mỗi tổ hợp chế độ cài đặt có thể áp dụng.
Cài đặt tệp kê khai | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG chưa được chỉ định |
---|---|---|---|
android:debuggable="true" | Gỡ lỗi; Ký hiệu; Được tối ưu hoá*1 | Gỡ lỗi; Ký hiệu; Không được tối ưu hoá*2 | (tương tự như NDK_DEBUG=1) |
android:debuggable="false" | Bản phát hành; Ký hiệu; Được tối ưu hoá | Bản phát hành; Ký hiệu; Không được tối ưu hoá | Bản phát hành; Không có ký hiệu; Được tối ưu hoá*3 |
*2: Mặc định để chạy
ndk-gdb
.*3: Chế độ mặc định.
Lưu ý: `NDK_DEBUG=0` là giá trị tương đương của `APP_OPTIM=release` và biên dịch bằng `-O2`. `NDK_DEBUG=1` là giá trị tương đương của `APP_OPTIM=debug` trong `Application.mk` và biên dịch bằng `-O0`. Để biết thêm thông tin về `APP_OPTIM`, hãy xem Application.mk.
Ví dụ về cú pháp trên dòng lệnh như sau:
$ ndk-build NDK_DEBUG=1
Yêu cầu
Bạn cần GNU Make 4 để sử dụng ndk-build hoặc NDK nói chung. NDK đi kèm bản sao GNU Make riêng và sẽ sử dụng bản sao đó trừ khi bạn đã đặt biến môi trường $GNUMAKE
để trỏ đến một công cụ tạo (make) không phù hợp.
Cơ sở dữ liệu biên dịch JSON
Trong NDK r18 trở lên, ndk-build có thể tạo cơ sở dữ liệu biên dịch JSON.
Bạn có thể sử dụng ndk-build compile_commands.json
để tạo cơ sở dữ liệu mà không cần tạo mã hoặc sử dụng ndk-build GEN_COMPILE_COMMANDS_DB=true
nếu muốn xây dựng và tạo cơ sở dữ liệu dưới dạng hiệu ứng phụ.