Android 向現有項目添加 C/C++ 代碼
創建新的原生源文件(cpp 目錄)
要在應用模塊的主源代碼集中創建一個包含新建原生源文件的 cpp/
目錄,請按以下步驟操作:
-
從 IDE 的左側打開 Project 窗格並從下拉菜單中選擇 Project 視圖。
-
導航到 您的模塊 > src,右鍵點擊 main 目錄,然後選擇 New > Directory。
-
爲目錄輸入一個名稱(例如
cpp
)並點擊 OK。 -
右鍵點擊您剛剛創建的目錄,然後選擇 New > C/C++ Source File。
-
爲您的源文件輸入一個名稱,例如
native-lib
。 -
從Type下拉菜單中,爲您的源文件選擇文件擴展名,例如.cpp
- 點擊 Edit File Types(右邊的設置按鈕),您可以向下拉菜單中添加其他文件類型,例如
.cxx
或.hxx
。在彈出的 C/C++ 對話框中,從 Source Extension 和 Header Extension 下拉菜單中選擇另一個文件擴展名,然後點擊 OK。
- 點擊 Edit File Types(右邊的設置按鈕),您可以向下拉菜單中添加其他文件類型,例如
-
如果您還希望創建一個標頭文件,請選中 Create an associated header 複選框。
-
點擊 OK。
創建 CMake 構建腳本(CMakeLists.txt)
要創建一個可以用作 CMake 構建腳本的純文本文件,請按以下步驟操作:
-
從 IDE 的左側打開 Project 窗格並從下拉菜單中選擇 Project 視圖。
-
右鍵點擊您的模塊的根目錄並選擇
New > File
注:您可以在所需的任意位置創建構建腳本。不過,在配置構建腳本時,原生源文件和庫的路徑將與構建腳本的位置相關。
-
輸入“CMakeLists.txt”作爲文件名並點擊 OK
您可以添加 CMake 命令,對您的構建腳本進行配置。要指示 CMake 從原生源代碼創建一個原生庫,請將
cmake_minimum_required()
和add_library()
命令添加到您的構建腳本中
將 Gradle 關聯到您的原生庫
2種方式
…使用AndroidStudio UI
使用 Android Studio UI 將 Gradle 關聯到外部 CMake 或 ndk-build 項目
-
從 IDE 左側打開 Project 窗格並選擇 Android 視圖。
-
右鍵點擊您想要關聯到原生庫的模塊(例如 app 模塊),並從菜單中選擇 Link C++ Project with Gradle。您應看到一個如圖 4 所示的對話框。
-
從下拉菜單中,選擇CMake或ndk-build
- 如果您選擇 CMake,請使用 Project Path 旁的字段爲您的外部 CMake 項目指定
CMakeLists.txt
腳本文件。 - 如果您選擇 ndk-build,請使用 Project Path 旁的字段爲您的外部 ndk-build 項目指定
Android.mk
腳本文件。如果Application.mk
文件與您的Android.mk
文件位於相同目錄下,Android Studio 也會包含此文件。
- 如果您選擇 CMake,請使用 Project Path 旁的字段爲您的外部 CMake 項目指定
-
點擊 OK
…手動配置Gradle
要手動配置 Gradle 以關聯到您的原生庫,您需要將
externalNativeBuild {}
塊添加到模塊級build.gradle
文件中,並使用cmake {}
或ndkBuild {}
對其進行配置:android { ... defaultConfig {...} buildTypes {...} // Encapsulates your external native build configurations. externalNativeBuild { // Encapsulates your CMake build configurations. cmake { // Provides a relative path to your CMake build script. path "CMakeLists.txt" } } }
注:如果您想要將 Gradle 關聯到現有 ndk-build 項目,請使用 ndkBuild {}
塊而不是 cmake {}
,並提供 Android.mk
文件的相對路徑。如果 Application.mk
文件與您的 Android.mk
文件位於相同目錄下,Gradle 也會包含此文件
來源:
AndroidStudio Cmake學習–如何漂亮的使用jni
Android 創建支持 C/C++ 的新項目
Android NDK Guide