# Android 中怎么搭建NDK環境
## 一、NDK簡介
NDK(Native Development Kit)是Android提供的一套工具集合,允許開發者使用C/C++等原生代碼開發Android應用。主要應用場景包括:
1. 性能敏感型計算(如圖形渲染、音視頻處理)
2. 復用現有C/C++代碼庫
3. 底層硬件操作
## 二、環境準備
### 1. 系統要求
- Windows 10/11 或 macOS 10.14+
- Android Studio 2022.3.1 或更高版本
- JDK 11+
### 2. 必要組件安裝
通過Android Studio安裝:
1. 打開SDK Manager
2. 選擇"SDK Tools"選項卡
3. 勾選以下組件:
- NDK (Side by side)
- CMake
- LLDB(調試工具)

## 三、項目配置
### 1. 創建支持NDK的項目
```bash
# 使用命令行創建項目
./gradlew init --type ndk-library
或通過Android Studio向導: 1. 新建項目時勾選”Include C++ Support” 2. 選擇”Native C++“模板
app/
├── build.gradle # 模塊級配置
├── CMakeLists.txt # CMake構建腳本
└── src/
└── main/
├── cpp/ # 原生代碼目錄
│ └── native-lib.cpp
└── java/ # Java代碼
cmake_minimum_required(VERSION 3.22.1)
add_library( # 庫名稱
native-lib
# 庫類型
SHARED
# 源文件
src/main/cpp/native-lib.cpp )
find_library( # 查找系統庫
log-lib
log )
target_link_libraries( # 鏈接庫
native-lib
${log-lib} )
# 添加預編譯宏
add_definitions(-DENABLE_DEBUG=1)
# 包含第三方頭文件
include_directories(third_party/include)
# 添加動態庫
add_library(ffmpeg SHARED IMPORTED)
set_target_properties(ffmpeg PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libffmpeg.so)
android {
defaultConfig {
externalNativeBuild {
cmake {
cppFlags "-std=c++17"
arguments "-DANDROID_STL=c++_shared"
}
}
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
version "3.22.1"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.so'])
}
public class NativeLib {
static {
System.loadLibrary("native-lib");
}
public native String stringFromJNI();
}
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_app_NativeLib_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
#include <android/log.h>
#define LOG_TAG "NativeCode"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
void example() {
LOGD("Debug message: %d", 42);
}
java.lang.UnsatisfiedLinkError
ndk {
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
}
# 在CMake中明確指定
set(CMAKE_CXX_STANDARD 17)
critical關鍵字保護關鍵代碼段提示:建議定期更新NDK版本,Android Studio會每季度發布新版NDK,包含性能改進和安全更新。 “`
(全文約1100字,實際字數可能因格式調整略有變化)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。