使用cmake/make打包Android 动态库

2020-08-30  本文已影响0人  ben大福

打包需要使用cmake是AndroidSdk目录下的
${ANDROID_HOME}/cmake/3.6.4111459/bin/cmake

参数:
-H

指定CMakeLists目录

-B

指定build目录

-DANDROID_NDK

ndk路径

-DCMAKE_LIBRARY_OUTPUT_DIRECTORY

输出目录

-DCMAKE_MAKE_PROGRAM

cmake 程序ninja

-DCMAKE_TOOLCHAIN_FILE

打包工具链的路径
${ANDROID_SDK}/ndk-bundle/build/cmake/android.toolchain.cmake

-DANDROID_ABI

armeabi-v7a 
armeabi-v7a with NEON   与 -DANDROID_ABI=armeabi-v7a -DANDROID_ARM_NEON=ON 相同。
arm64-v8a   
x86 
x86_64

-DCMAKE_BUILD_TYPE

构造模式:Release、Debug。是否带debug调试信息

-DANDROID_NATIVE_API_LEVEL 最低支持的Api版本
-DANDROID_TOOLCHAIN

工具链名称

-DCMAKE_GENERATOR

构造器 Ninja

打包所有abi的脚本例子:

echo "start build"
export NDK=/Users/zhumingwei/Downloads/android-ndk-r20b //自己下载NDK目录,也可用SDK中的目录
export MINSDKVERSION=19
cmake_exec=$ANDROID_HOME/cmake/3.6.4111459/bin/cmake
ninja_exec=$ANDROID_HOME/cmake/3.6.4111459/bin/ninja
export CMAKE_GENERATOR="Ninja"
export BUILD_TYPE=Debug #Release、Debug
export OUTPUT_DIR="输出目录"
H_dir="源文件目录"
B_dir=${H_dir}/build
build(){
    echo "start build $1"
    pre=$(pwd)
    export ANDROID_ABI=$1 # armeabi-v7a、arm64-v8a、x86、x86_64,默认armeabi
    $cmake_exec \
    -H$H_dir \
    -B$B_dir \
    -DANDROID_NDK=${NDK} \
    -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${OUTPUT_DIR}/${ANDROID_ABI} \
    -DCMAKE_MAKE_PROGRAM=${ANDROID_HOME}/cmake/3.6.4111459/bin/ninja \
    -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
    -DANDROID_ABI=$ANDROID_ABI \
    -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
    -DANDROID_NATIVE_API_LEVEL=$MINSDKVERSION \
    -DANDROID_TOOLCHAIN=clang \
    -DCMAKE_GENERATOR=$CMAKE_GENERATOR\ 
    cd $B_dir
    $ninja_exec
    cd $pre
}

build "x86"
build "armeabi-v7a"
build "arm64-v8a"
build "x86_64"
上一篇下一篇

猜你喜欢

热点阅读