如要在 Android 專案中新增 C 和 C++ 程式碼,請在
cpp
目錄。當您建構專案時,這個程式碼會編譯為 Gradle 可封裝至應用程式的原生程式庫。您的 Java 或 Kotlin 程式碼可以透過 Java Native Interface (例如 JNI)。如要進一步瞭解如何使用 JNI 架構,請參閱 Android 適用的 JNI 提示。
Android Studio 支援 CMake,這對於跨平台專案非常實用。Android Studio 也支援 ndk-build
,其速度比 CMake 快,但僅支援 Android。同時使用 CMake 和
目前不支援在相同模組中使用 ndk-build
。
將現有的 ndk-build
程式庫匯入 Android Studio
可協助您瞭解
將 Gradle 連結至原生資料庫專案。
本頁面將說明如何使用必要的建構工具設定 Android Studio、透過 C/C++ 支援功能建立新專案,以及在您的專案中新增 C/C++ 檔案。
如要改為在現有專案中新增原生程式碼,請按照下列步驟操作:
-
建立新的原生來源檔案,然後將
新增至 Android Studio 專案
- 如果您已有原生程式碼,或想要 匯入預先建立的原生資料庫
-
設定 CMake,將原生原始碼建構到資料庫中。必須提供這個建構指令碼
如果您要匯入預先建構的平台或平台
程式庫
- 如果現有的原生資料庫已含有
CMakeLists.txt
建構指令碼,或使用ndk-build
且包含Android.mk
建構指令碼,請略過這個步驟。
- 如果現有的原生資料庫已含有
-
提供 CMake 或
ndk-build
指令碼檔案的路徑,設定 Gradle。Gradle 會使用建構指令碼將原始碼匯入 Android Studio 專案,並將原生資料庫封裝至應用程式中。
設定專案後,請透過以下項目存取原生函式:
使用 JNI 架構的 Java 或 Kotlin 程式碼。如要建構並執行應用程式,請按一下「Run」圖示 。
注意:如果現有專案使用了已淘汰的
ndkCompile
工具,遷移至 CMake 或
ndk-build
。
下載 NDK 並建構工具
如要針對應用程式編譯及偵錯原生程式碼,您必須具備下列元件:
- Android Native Development Kit (NDK):這個工具組可讓您搭配 Android 使用 C 和 C++ 程式碼。NDK 提供平台程式庫,可用於管理原生活動,以及存取感應器和觸控輸入等實體裝置元件。
-
CMake:與 Gradle 搭配使用的外部建構工具,可建構原生資料庫。如果您只打算使用
ndk-build
。 - LLDB: Android Studio 中的偵錯工具,可用來為原生程式碼偵錯。
如需瞭解如何安裝這些元件,請參閱安裝及設定 NDK 和 CMake。
建立支援 C/C++ 的新專案
如要建立支援原生程式碼的新專案,其程序與建立任何其他 Android Studio 專案類似,但還有額外步驟:
- 在精靈的「Choose your project」區段,選取「Native C++」專案類型。
- 按一下「繼續」。
- 在精靈的下一個區段中填寫所有其他欄位。
- 按一下「Next」。
- 在精靈的「Customize C++ Support」區段,您可以使用「C++ Standard」欄位自訂專案。
- 在下拉式清單中,選取要使用的 C++ 標準化。選取「Toolchain Default」可使用預設的 CMake 設定。
- 按一下「Finish」。
Android Studio 建立新專案後,請開啟 IDE 左側的「Project」窗格,然後從選單中選取「Android」檢視畫面。如圖 1 所示,Android Studio 會新增 cpp 群組:
圖 1. 適用於原生來源和外部建構指令碼的 Android 檢視表群組。
注意:這個畫面不會反映磁碟中實際的檔案階層,但會將類似的檔案分組以簡化專案瀏覽作業。
您可以在 cpp 群組中找到所有原生
來源檔案、標頭、CMake 或 ndk-build
的建構指令碼,以及預先建構的
個人專案所包含的程式庫新專案:Android Studio
建立 C++ 來源檔案範例 native-lib.cpp
,並置入
在應用程式模組的 src/main/cpp/
目錄中。這個程式碼範例提供簡單的 C++ 函式 stringFromJNI()
,可傳回 "Hello from C++"
字串。如要瞭解如何在專案中新增其他來源檔案,請參閱如何建立新的原生來源檔案相關章節。
與 build.gradle
檔案指示 Gradle 如何建構應用程式的方式類似,CMake 與 ndk-build
也需要透過建構指令碼瞭解如何建構原生資料庫。如果是新專案,Android Studio 會建立 CMake 建構指令碼 CMakeLists.txt
,並置入模組的根目錄中。如要進一步瞭解此建構指令碼的內容,請參閱「設定 CMake」一文。
建構並執行範例應用程式
按一下「Run」圖示 後,Android Studio 會建構並啟動應用程式,在 Android 裝置或模擬器上顯示「Hello C++」訊息。以下總覽說明這類事件
來建立並執行範例應用程式:
- Gradle 呼叫外部建構指令碼
CMakeLists.txt
。 - CMake 按照建構指令碼中的指令,將 C++ 來源檔案
native-lib.cpp
編譯成共用物件資料庫,並將其命名為libnative-lib.so
。Gradle 就會將其封裝到應用程式中。 - 在執行階段,應用程式的
MainActivity
會使用System.loadLibrary()
載入原生資料庫。程式庫的原生函式 「stringFromJNI()
」的應用程式已可使用。 -
MainActivity.onCreate()
呼叫stringFromJNI()
, 會傳回"Hello from C++"
並用於更新TextView
。
如要驗證 Gradle 是否已將原生資料庫封裝在應用程式中,請使用 APK 分析工具:
- 依序選取「Build」>「Build Bundles(s)/APK(s)」>「Build APK(s)」。
- 依序選取「Build」>「Analyze APK」。
- 從
app/build/outputs/
目錄中選取 APK 或 AAB,然後按一下「OK」。 - 如圖 2 所示,
libnative-lib.so
顯示在 APK 分析工具視窗中的lib/<ABI>/
底下。圖 2. 使用 APK 分析工具找出原生資料庫。
提示:如要測試使用其他原生程式碼的 Android 應用程式,請依序按一下「File」>「New」>「Import Sample」,然後從 Ndk 清單選取範例專案。
建立新 C/C++ 來源檔案
如要在現有專案中新增 C/C++ 來源檔案,請按照下列步驟操作:
- 如果應用程式的主要來源集中沒有
cpp/
目錄,請按照下列步驟操作: - 開啟 IDE 左側的「Project」窗格, 從選單中選取「Project」檢視畫面。
- 依序前往「your-module」>「src」。
- 在「main」目錄上按一下滑鼠右鍵,然後選取「New」>「New」 Directory。
- 輸入
cpp
做為目錄名稱,然後按一下「OK」。 - 在
cpp/
目錄上按一下滑鼠右鍵,然後依序選取「New」>「New」 C/C++ 來源檔案。 - 輸入來源檔案的名稱,例如
native-lib
。 - 從「類型」選單中選取副檔名
做為來源檔案 (例如
.cpp
)。- 按一下「編輯檔案類型」。
可在選單中新增其他檔案類型,例如
.cxx
或.hxx
。在隨即彈出的「New File Extensions」對話方塊中,從「Source Extension」和「Header Extension」選單中選取其他副檔名,然後按一下「OK」。
- 按一下「編輯檔案類型」。
- 如要建立標頭檔案,請勾選「Create an associated header」核取方塊。
- 按一下「OK」。
在專案中新增 C/C++ 檔案之後,您還是需要設定 CMake,將檔案納入原生資料庫中。
其他資源
如要進一步瞭解如何在應用程式中支援 C/C++ 程式碼,請嘗試使用下列資源。
程式碼研究室
- 使用 Android Studio 建立 Hello-CMake:這個程式碼研究室會說明如何使用 Android Studio CMake 範本開始開發 Android NDK 專案。