在 Android 项目中使用 jni 有两种编译方案,一种是传统的ndkbuild,一种是当前推荐使用的 cmake;
如果在创建项目的时候选择了 include C++ support 则会创建包含 cmake 的项目模板;
两者均是生成 so 包;
编译方式
gradle 对两种编译方式进行了统一;只需要在 module 下的build.gradle 中添加
externalNativeBuild {
ndkBuild {
path "src/main/jni/Android.mk"
}
}
或者
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
其中 path 指定的是两种编译情况下所需配置文件的地址
此外:
ndkbuild 编译情况下可在android->defaultConfig 中添加
ndk{
abiFilters "armeabi-v7a"
}
用于设置NDKOption,如abiFilters等;
cmake 编译情况下可在android->defaultConfig 中添加
externalNativeBuild {
cmake {
abiFilters "armeabi-v7a"
cppFlags ""
}
}
用于设置ExternalNativeNdkBuildOptions,如abiFilters、cppFlags等;
编译配置
在ndkbuild中,采用Android.mk+Application.mk+src的方式
在camke中,采用CmakeLists.txt+src的方式
网友评论