ndkbuild 与 cmake

ndkbuild与cmake

在 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的方式

猜你喜欢

转载自blog.csdn.net/qq_20404903/article/details/80662250