Bắt đầu sử dụng NDK

Bộ phát triển gốc (NDK) là một bộ công cụ cho phép bạn sử dụng mã C và C++ với Android, đồng thời cung cấp các thư viện nền tảng mà bạn có thể dùng để quản lý các hoạt động gốc và truy cập vào các thành phần của thiết bị thực tế, chẳng hạn như cảm biến và thiết bị vào cảm ứng. NDK có thể không phù hợp với hầu hết lập trình viên Android chưa có kinh nghiệm chỉ cần sử dụng mã Java và API khung để phát triển ứng dụng. Tuy nhiên, NDK có thể hữu ích cho các trường hợp bạn cần thực hiện một hoặc nhiều việc sau:

  • Khai thác thêm hiệu suất của thiết bị để đạt được độ trễ thấp hoặc chạy các ứng dụng nặng về điện toán, chẳng hạn như trò chơi hoặc chương trình mô phỏng vật lý.
  • Sử dụng lại thư viện C hoặc C++ của riêng bạn hoặc của nhà phát triển khác.

Khi sử dụng Android Studio 2.2 trở lên, bạn có thể dùng NDK để biên dịch mã C và C++ vào thư viện gốc và đóng gói mã vào APK bằng Gradle, hệ thống xây dựng tích hợp của IDE. Khi đó, mã Java của bạn có thể gọi các hàm trong thư viện gốc thông qua khung Giao diện gốc Java (JNI). Để tìm hiểu thêm về Gradle và hệ thống xây dựng Android, hãy đọc bài viết Định cấu hình bản dựng.

Công cụ xây dựng mặc định của Android Studio để biên dịch thư viện gốc là CMake. Android Studio cũng hỗ trợ ndk-build do hiện có nhiều dự án sử dụng bộ công cụ xây dựng đó. Tuy nhiên, nếu đang tạo một thư viện gốc mới thì bạn nên sử dụng CMake.

Hướng dẫn này cung cấp thông tin mà bạn cần để thiết lập và chạy bằng NDK trên Android Studio. Nếu bạn không có phiên bản Android Studio mới nhất, hãy tải xuống và cài đặt ngay.

Người dùng Gradle thử nghiệm cần chú ý: Cân nhắc việc di chuyển sang trình bổ trợ phiên bản 2.2.0 trở lên và sử dụng CMake hoặc ndk-build để xây dựng thư viện gốc nếu bạn thuộc một trong các trường hợp sau: Dự án gốc của bạn đã sử dụng CMake hoặc ndk-build; bạn muốn sử dụng phiên bản ổn định của hệ thống xây dựng Gradle; hoặc bạn muốn được hỗ trợ cho các công cụ tiện ích bổ sung, chẳng hạn như CCache. Nếu không, bạn có thể tiếp tục sử dụng phiên bản thử nghiệm của Gradle và Plugin Android.

Tải NDK và các công cụ xuống

Để biên dịch và gỡ lỗi mã gốc cho ứng dụng, bạn cần có các thành phần sau:

  • Bộ phát triển gốc (NDK) của Android: một bộ công cụ cho phép bạn sử dụng mã C và mã C++ với Android.
  • CMake: một công cụ xây dựng bên ngoài hoạt động cùng Gradle để xây dựng thư viện gốc. Nếu bạn chỉ định sử dụng ndk-build thì không cần đến thành phần này.
  • LLDB: Trình gỡ lỗi mà Android Studio sử dụng để gỡ lỗi mã gốc.

Để biết thông tin về cách cài đặt các thành phần này, hãy xem Cài đặt và định cấu hình NDK và CMake.

Tạo hoặc nhập dự án gốc

Sau khi thiết lập Android Studio, bạn có thể chỉ cần Tạo dự án mới có hỗ trợ C/C++. Tuy nhiên, nếu muốn thêm hoặc nhập mã gốc vào một dự án Android Studio hiện có, bạn cần thực hiện theo quy trình cơ bản sau:

  1. Tạo các tệp nguồn gốc mới và thêm các tệp đó vào dự án Android Studio.
    • Bạn có thể bỏ qua bước này nếu đã có mã gốc hoặc muốn nhập một thư viện gốc tạo sẵn.
  2. Tạo tập lệnh bản dựng CMake để hướng dẫn CMake cách tạo các nguồn gốc cho một thư viện. Bạn cũng cần có tập lệnh bản dựng này nếu đang nhập và liên kết dựa trên các thư viện nền tảng hoặc tạo sẵn.
    • Bạn có thể bỏ qua bước này nếu thư viện gốc hiện có đã có tập lệnh bản dựng CMakeLists.txt hoặc sử dụng ndk-build và bao gồm một tập lệnh bản dựng Android.mk.
  3. Liên kết Gradle với thư viện gốc bằng cách cung cấp một đường dẫn đến tệp tập lệnh CMake hoặc ndk-build. Gradle sẽ sử dụng tập lệnh bản dựng để nhập mã nguồn vào dự án Android Studio và đóng gói thư viện gốc (tệp SO) vào APK.

    Lưu ý: Nếu dự án hiện tại của bạn sử dụng công cụ ndkCompile không còn dùng nữa, bạn nên mở tệp build.properties và xoá dòng mã sau trước khi định cấu hình Gradle để sử dụng CMake hoặc ndk-build:

    // Remove this line
    android.useDeprecatedNdk = true
    
  4. Tạo và chạy ứng dụng của bạn bằng cách nhấp vào Run (Chạy) rồi chạy ứng dụng từ trình đơn chính. Gradle sẽ thêm quy trình xây dựng CMake hoặc ndk-build như một phần phụ thuộc để biên dịch, xây dựng và đóng gói thư viện gốc bằng APK.

Một khi ứng dụng đang chạy trên thiết bị thực tế hoặc trình mô phỏng, bạn có thể sử dụng Android Studio để Gỡ lỗi ứng dụng. Nếu không, để tìm hiểu thêm về NDK và các thành phần của NDK, hãy đọc trang Khái niệm.