# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。