打包需要使用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"