NDK 使用入門

Native Development Kit (NDK) 是一套工具,可讓您在 Android 系統中使用 C 和 C ++ 程式碼,並提供各種平台程式庫,方便您管理原生活動和存取權實體裝置元件,例如感應器和觸控輸入。NDK 可能不適合大多數 Android 程式設計新手,因為他們只需要使用 Java 程式碼和架構 API 來開發應用程式。不過,如果您需要進行以下一項或多項操作,NDK 就能派上用場:

  • 進一步提升裝置效能,以降低延遲或執行遊戲、物理模擬等需要大量運算的應用程式。
  • 重複使用您自己或其他開發人員的 C 或 C++ 程式庫。

您可以在 Android Studio 2.2 以上版本中使用 NDK 將 C 和 C++ 程式碼編譯為原生資料庫,然後使用 IDE 的整合建構系統 Gradle 將原生資料庫封裝至 APK。您的 Java 程式碼便可透過 Java 原生介面 (JNI) 架構呼叫原生資料庫中的函式。如要進一步瞭解 Gradle 和 Android 建構系統,請參閱設定您的建構

Android Studio 編譯原生資料庫的預設建構工具是 CMake。此外,由於有許多現有專案都使用 ndk-build 建構工具包,因此 Android Studio 也支援 ndk-build。不過,如要建立新的原生資料庫,建議您使用 CMake。

本指南提供一切所需資訊,說明如何在 Android Studio 上設定和執行 NDK。如果尚未安裝最新版 Android Studio,請立即下載並安裝

Gradle 實驗版本使用者注意事項:如果您符合以下任意一種情況,請考慮遷移至 2.2.0 以上版本外掛程式,並使用 CMake 或 ndk-build 建構原生資料庫:1. 您的原生專案已使用 CMake 或 ndk-build;2. 您想要使用穩定版的 Gradle 建構系統;3. 您希望支援外掛程式工具,例如 CCache。 如果沒有以上情況,您可以繼續使用 Gradle 實驗版本和 Android 外掛程式

下載 NDK 和工具

如要針對應用程式編譯及偵錯原生程式碼,您需要下列元件:

  • Android Native Development Kit (NDK):這套工具可讓您在 Android 系統中使用 C 和 C ++ 程式碼。
  • CMake:與 Gradle 搭配使用的外部建構工具,以建構原生資料庫。如果您只打算使用 ndk-build,則不需要這個元件。
  • LLDB:Android Studio 用來偵錯原生程式碼的偵錯工具。

如需瞭解如何安裝這些元件,請參閱安裝及設定 NDK 和 CMake

建立或匯入原生專案

Android Studio 設定完成後,便可直接建立支援 C/C++ 的新專案。但如果要在現有 Android Studio 專案中新增或匯入原生程式碼,則需要按照下列基本程序操作:

  1. 建立新的原生來源檔案,並將這些檔案新增至 Android Studio 專案。
    • 如果您已有原生程式碼,或想要匯入預建原生資料庫,可以略過這個步驟。
  2. 建立 CMake 建構指令碼,指示 CMake 如何將原生來源建構至程式庫。如要匯入並連結預建程式庫或平台程式庫,您也需要這個建構指令碼。
    • 如果現有的原生資料庫已有 CMakeLists.txt 建構指令碼,或使用 ndk-build 並包含 Android.mk 建構指令碼,則可略過這個步驟。
  3. 提供指向 CMake 或 ndk-build 指令碼檔案的路徑,將 Gradle 連結至原生資料庫。Gradle 會使用建構指令碼將原始碼匯入您的 Android Studio 專案,並將原生資料庫 (SO 檔案) 封裝至 APK。

    注意:如果現有專案使用的是已淘汰的 ndkCompile 工具,請先開啟 build.properties 檔案,並移除以下這行程式碼,然後再設定 Gradle 以使用 CMake 或 ndk-build:

    // Remove this line
    android.useDeprecatedNdk = true
    
  4. 按一下「執行」圖示 接著從主選單執行應用程式,即可建構並執行應用程式。Gradle 會將 CMake 或 ndk-build 程序新增為依附元件,用於編譯和建構原生資料庫,並將其與 APK 一併封裝。

應用程式在實體裝置或模擬器上執行後,您可以使用 Android Studio 偵錯應用程式。如要進一步瞭解 NDK 及其元件,請參閱概念頁面。