build_android_rabbitmq.sh
bash
#!/bin/bash
# build_android_rabbitmq.sh
# 设置变量
RABBITMQ_C_SOURCE_DIR="/Users/longwei/CLionProjects/rabbitmq-c"
ANDROID_NDK="/Users/longwei/Library/Android/sdk/ndk/25.1.8937393"
BUILD_DIR="${RABBITMQ_C_SOURCE_DIR}/build_android"
INSTALL_DIR="${RABBITMQ_C_SOURCE_DIR}/android_libs"
echo "开始构建 Android 版本的 RabbitMQ-C..."
# 清理之前的构建
rm -rf ${BUILD_DIR} ${INSTALL_DIR}
# 创建构建目录
mkdir -p ${BUILD_DIR}
mkdir -p ${INSTALL_DIR}
cd ${RABBITMQ_C_SOURCE_DIR}
# 定义要构建的架构
ABI_LIST=("armeabi-v7a" "arm64-v8a" "x86" "x86_64")
for ABI in "${ABI_LIST[@]}"; do
echo "=========================================="
echo "构建架构: ${ABI}"
echo "=========================================="
# 为每个架构创建单独的构建目录
mkdir -p ${BUILD_DIR}/${ABI}
cd ${BUILD_DIR}/${ABI}
# 设置 CMake 参数
CMAKE_ARGS=(
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake"
-DANDROID_ABI="${ABI}"
-DANDROID_PLATFORM=android-21
-DANDROID_STL=c++_shared
-DCMAKE_BUILD_TYPE=Release
-DENABLE_SSL_SUPPORT=OFF
-DBUILD_SHARED_LIBS=ON
-DBUILD_STATIC_LIBS=ON
-DBUILD_EXAMPLES=OFF
-DBUILD_TOOLS=OFF
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}/${ABI}"
)
# 执行 CMake
cmake "${RABBITMQ_C_SOURCE_DIR}" "${CMAKE_ARGS[@]}"
# 构建
cmake --build . --config Release --target install -j$(sysctl -n hw.ncpu)
echo "架构 ${ABI} 构建完成!"
echo "输出目录: ${INSTALL_DIR}/${ABI}"
echo ""
# 显示生成的文件
ls -la "${INSTALL_DIR}/${ABI}/lib/"
cd ${RABBITMQ_C_SOURCE_DIR}
done
echo "所有架构构建完成!"
echo "库文件已生成到: ${INSTALL_DIR}"
带 OpenSSL
bash
#!/bin/bash
# build_rabbitmq_android_ssl.sh
# 配置变量
RABBITMQ_C_SOURCE_DIR="/Users/longwei/CLionProjects/rabbitmq-c"
OPENSSL_ANDROID_DIR="/Users/longwei/CLionProjects/rabbitmq-c/openssl/android_libs_shared_3.x" # 上一步的输出目录
ANDROID_NDK="/Users/longwei/Library/Android/sdk/ndk/25.1.8937393"
API_LEVEL=21
BUILD_DIR="${RABBITMQ_C_SOURCE_DIR}/build_android_ssl"
INSTALL_DIR="${RABBITMQ_C_SOURCE_DIR}/android_libs_ssl"
echo "开始构建带 SSL 支持的 RabbitMQ-C for Android..."
# 清理之前的构建
rm -rf ${BUILD_DIR} ${INSTALL_DIR}
# 创建构建目录
mkdir -p ${BUILD_DIR}
mkdir -p ${INSTALL_DIR}
cd ${RABBITMQ_C_SOURCE_DIR}
# 支持的 ABI 列表
ABIS=("armeabi-v7a" "arm64-v8a")
for ABI in "${ABIS[@]}"; do
echo "=========================================="
echo "构建架构: ${ABI}"
echo "=========================================="
# 为每个架构创建单独的构建目录
mkdir -p ${BUILD_DIR}/${ABI}
cd ${BUILD_DIR}/${ABI}
# 设置对应的 OpenSSL 目录
OPENSSL_ABI_DIR="${OPENSSL_ANDROID_DIR}/${ABI}"
if [ ! -d "${OPENSSL_ABI_DIR}" ]; then
echo "错误: 找不到 OpenSSL 目录: ${OPENSSL_ABI_DIR}"
echo "请先构建 OpenSSL for Android"
exit 1
fi
# 配置 CMake 参数
cmake ${RABBITMQ_C_SOURCE_DIR} \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${ABI} \
-DANDROID_PLATFORM=android-${API_LEVEL} \
-DANDROID_STL=c++_shared \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_SSL_SUPPORT=ON \
-DOPENSSL_ROOT_DIR=${OPENSSL_ABI_DIR} \
-DOPENSSL_INCLUDE_DIR=${OPENSSL_ABI_DIR}/include \
-DOPENSSL_CRYPTO_LIBRARY=${OPENSSL_ABI_DIR}/lib/libcrypto.a \
-DOPENSSL_SSL_LIBRARY=${OPENSSL_ABI_DIR}/lib/libssl.a \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TOOLS=OFF \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}/${ABI}
# 构建
cmake --build . --config Release --target install -j$(sysctl -n hw.ncpu)
echo "架构 ${ABI} 构建完成!"
echo "输出目录: ${INSTALL_DIR}/${ABI}"
echo ""
cd ${RABBITMQ_C_SOURCE_DIR}
done
echo "所有架构构建完成!"
echo "库文件已生成到: ${INSTALL_DIR}"