Android NDK
原生开发套件 (NDK) 是一套工具,使你能够在 Android 应用中使用 C 和 C++ 代码,并提供众多平台库,你可使用这些平台库管理原生 Activity 和访问实体设备组件,例如传感器和触摸输入。
关于NDK基础概念,请查看官方的文档NDK 使用入门 。
安装 NDK
参见文档 安装及配置 NDK和CMake
向原生工程添加C/C++代码
参见文档 添加C/C++代码
配置 Gradle
android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
cFlags ""
}
}
}
buildTypes {...}
// 本地外部构建配置
externalNativeBuild {
// CMake构建配置
cmake {
// 提供CMake构建脚本的相对路径
path "src/main/cpp/CMakeLists.txt"
}
}
}
参见文档 Gradle 关联
无源码打包动态库
添加jniLibs配置:
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
...
}
buildTypes {
...
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
在app模块目录下创建libs文件夹,将已经编译好的动态库拷贝到该文件夹。
关于手工编译安卓动态库,参考以下脚本:
@echo off
set SDK=C:\Users\Administrator\AppData\Local\Android\Sdk
set NDK=%SDK%\ndk\24.0.7956693
set NINJA=%SDK%\cmake\3.10.2.4988404\bin\ninja
set MINSDKVERSION=21
set ABI=x86
cd build
cmake ^
-DCMAKE_SYSTEM_NAME=Android ^
-DCMAKE_SYSTEM_VERSION=%MINSDKVERSION% ^
-DANDROID_PLATFORM=android-%MINSDKVERSION% ^
-DCMAKE_ANDROID_ARCH_ABI=%ABI% ^
-DCMAKE_ANDROID_NDK=%NDK% ^
-DCMAKE_TOOLCHAIN_FILE=%NDK%\build\cmake\android.toolchain.cmake ^
-DCMAKE_MAKE_PROGRAM=%NINJA% ^
-DCMAKE_BUILD_TYPE=Release ^
-G "Ninja" ..
%NINJA%
pause